~ubuntu-branches/ubuntu/saucy/quagga/saucy

« back to all changes in this revision

Viewing changes to zebra/ioctl.c

  • Committer: Bazaar Package Importer
  • Author(s): Stephan Hermann
  • Date: 2007-09-14 09:47:54 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20070914094754-kqi815lcg6n8mh51
Tags: 0.99.9-1ubuntu1
* Merged new upstream version (LP: #139376)
  - Merged debian/changelog
* Fixes a DoS and some bugs introduced in 0.99.8
  (see: http://www.quagga.net/news2.php?y=2007&m=9&d=7#id1189190760)
* Remaining Ubuntu Patches:
  - debian/rules: use bash as shell
  - debian/quagga.prerm: handle upgrades more gracefully
  - debian/patches/81_32bit_u64.dpatch: Define __u64 as uint64_t
    before including the netlink headers, since that symbol does not exist
    by default on 32 bit arches. Fixes i386/powerpc FTBFS.
  - debian/patches/83_ifaddr_defs.dpatch:
    zebra/rt_netlink.c: #include <linux/if_addr.h> and define IF[L]A_RTA
    macros, so that the file compiles again with our kernel headers.
  - debian/patches/20_ht-20061217-0.99.6-bgp-md5.dpatch: updated for
    linux kernel 2.6.20.

Show diffs side-by-side

added added

removed removed

Lines of Context:
179
179
  return kernel_address_delete_ipv4 (ifp, ifc);
180
180
}
181
181
#else /* ! HAVE_NETLINK */
182
 
#ifdef HAVE_IFALIASREQ
 
182
#ifdef HAVE_STRUCT_IFALIASREQ
183
183
/* Set up interface's IP address, netmask (and broadcas? ).  *BSD may
184
184
   has ifaliasreq structure.  */
185
185
int
199
199
  memset (&addr, 0, sizeof (struct sockaddr_in));
200
200
  addr.sin_addr = p->prefix;
201
201
  addr.sin_family = p->family;
202
 
#ifdef HAVE_SIN_LEN
 
202
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
203
203
  addr.sin_len = sizeof (struct sockaddr_in);
204
204
#endif
205
205
  memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in));
207
207
  memset (&mask, 0, sizeof (struct sockaddr_in));
208
208
  masklen2ip (p->prefixlen, &mask.sin_addr);
209
209
  mask.sin_family = p->family;
210
 
#ifdef HAVE_SIN_LEN
 
210
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
211
211
  mask.sin_len = sizeof (struct sockaddr_in);
212
212
#endif
213
213
  memcpy (&addreq.ifra_mask, &mask, sizeof (struct sockaddr_in));
237
237
  memset (&addr, 0, sizeof (struct sockaddr_in));
238
238
  addr.sin_addr = p->prefix;
239
239
  addr.sin_family = p->family;
240
 
#ifdef HAVE_SIN_LEN
 
240
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
241
241
  addr.sin_len = sizeof (struct sockaddr_in);
242
242
#endif
243
243
  memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in));
245
245
  memset (&mask, 0, sizeof (struct sockaddr_in));
246
246
  masklen2ip (p->prefixlen, &mask.sin_addr);
247
247
  mask.sin_family = p->family;
248
 
#ifdef HAVE_SIN_LEN
 
248
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
249
249
  mask.sin_len = sizeof (struct sockaddr_in);
250
250
#endif
251
251
  memcpy (&addreq.ifra_mask, &mask, sizeof (struct sockaddr_in));
335
335
 
336
336
  return 0;
337
337
}
338
 
#endif /* HAVE_IFALIASREQ */
 
338
#endif /* HAVE_STRUCT_IFALIASREQ */
339
339
#endif /* HAVE_NETLINK */
340
340
 
341
341
/* get interface flags */
457
457
  return ret;
458
458
}
459
459
#else /* LINUX_IPV6 */
460
 
#ifdef HAVE_IN6_ALIASREQ
 
460
#ifdef HAVE_STRUCT_IN6_ALIASREQ
461
461
#ifndef ND6_INFINITE_LIFETIME
462
462
#define ND6_INFINITE_LIFETIME 0xffffffffL
463
463
#endif /* ND6_INFINITE_LIFETIME */
478
478
  memset (&addr, 0, sizeof (struct sockaddr_in6));
479
479
  addr.sin6_addr = p->prefix;
480
480
  addr.sin6_family = p->family;
481
 
#ifdef HAVE_SIN_LEN
 
481
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
482
482
  addr.sin6_len = sizeof (struct sockaddr_in6);
483
483
#endif
484
484
  memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in6));
486
486
  memset (&mask, 0, sizeof (struct sockaddr_in6));
487
487
  masklen2ip6 (p->prefixlen, &mask.sin6_addr);
488
488
  mask.sin6_family = p->family;
489
 
#ifdef HAVE_SIN_LEN
 
489
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
490
490
  mask.sin6_len = sizeof (struct sockaddr_in6);
491
491
#endif
492
492
  memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
494
494
  addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
495
495
  addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
496
496
  
497
 
#ifdef HAVE_IFRA_LIFETIME 
 
497
#ifdef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME 
498
498
  addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; 
499
499
  addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; 
500
500
#endif
522
522
  memset (&addr, 0, sizeof (struct sockaddr_in6));
523
523
  addr.sin6_addr = p->prefix;
524
524
  addr.sin6_family = p->family;
525
 
#ifdef HAVE_SIN_LEN
 
525
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
526
526
  addr.sin6_len = sizeof (struct sockaddr_in6);
527
527
#endif
528
528
  memcpy (&addreq.ifra_addr, &addr, sizeof (struct sockaddr_in6));
530
530
  memset (&mask, 0, sizeof (struct sockaddr_in6));
531
531
  masklen2ip6 (p->prefixlen, &mask.sin6_addr);
532
532
  mask.sin6_family = p->family;
533
 
#ifdef HAVE_SIN_LEN
 
533
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
534
534
  mask.sin6_len = sizeof (struct sockaddr_in6);
535
535
#endif
536
536
  memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
537
537
 
538
 
#ifdef HAVE_IFRA_LIFETIME
 
538
#ifdef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME
539
539
  addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME; 
540
540
  addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME; 
541
541
#endif
557
557
{
558
558
  return 0;
559
559
}
560
 
#endif /* HAVE_IN6_ALIASREQ */
 
560
#endif /* HAVE_STRUCT_IN6_ALIASREQ */
561
561
 
562
562
#endif /* LINUX_IPV6 */
563
563