summaryrefslogtreecommitdiffstats
path: root/zebra
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2010-02-05 07:01:51 +0100
committerDavid Lamparter <equinox@diac24.net>2010-02-05 07:01:51 +0100
commitb68880c69f3dc40661c678d78af7a41df92072c3 (patch)
treecc9d0a579fe689dfebe6bd2f6606b6db8a8dd26f /zebra
parentadce15e158ce7560631ca8a0185ce12588b111f0 (diff)
downloadquagga-b68880c69f3dc40661c678d78af7a41df92072c3.tar.bz2
quagga-b68880c69f3dc40661c678d78af7a41df92072c3.tar.xz
zebra: fix rdnss on NetBSD
NetBSD ships struct nd_opt_rdnss in netinet/icmp6.h. fix zebra RDNSS to detect and use that if present.
Diffstat (limited to 'zebra')
-rw-r--r--zebra/rtadv.c8
-rw-r--r--zebra/rtadv.h10
2 files changed, 10 insertions, 8 deletions
diff --git a/zebra/rtadv.c b/zebra/rtadv.c
index 7d9c0f6c..e8c223f2 100644
--- a/zebra/rtadv.c
+++ b/zebra/rtadv.c
@@ -241,9 +241,9 @@ rtadv_send_packet (int sock, struct interface *ifp)
unsigned int rdnss_entries = 1;
ndopt_rdnss = (struct nd_opt_rdnss *) (buf + len);
- ndopt_rdnss->nd_opt_type = ND_OPT_RDNSS;
- ndopt_rdnss->nd_opt_reserved = 0;
- ndopt_rdnss->nd_opt_lifetime = htonl(zif->rtadv.AdvRDNSSLifetime);
+ ndopt_rdnss->nd_opt_rdnss_type = ND_OPT_RDNSS;
+ ndopt_rdnss->nd_opt_rdnss_reserved = 0;
+ ndopt_rdnss->nd_opt_rdnss_lifetime = htonl(zif->rtadv.AdvRDNSSLifetime);
len += sizeof(struct nd_opt_rdnss);
@@ -256,7 +256,7 @@ rtadv_send_packet (int sock, struct interface *ifp)
rdnss_entries += 2;
}
- ndopt_rdnss->nd_opt_len = rdnss_entries;
+ ndopt_rdnss->nd_opt_rdnss_len = rdnss_entries;
}
if (zif->rtadv.AdvIntervalOption)
diff --git a/zebra/rtadv.h b/zebra/rtadv.h
index 0893ba53..6bd342e3 100644
--- a/zebra/rtadv.h
+++ b/zebra/rtadv.h
@@ -97,14 +97,16 @@ struct nd_opt_homeagent_info { /* Home Agent info */
} __attribute__((__packed__));
#endif
+#ifndef HAVE_STRUCT_ND_OPT_RDNSS
/* see RFC 5006, section 5.1 */
struct nd_opt_rdnss {
- uint8_t nd_opt_type;
- uint8_t nd_opt_len;
- uint16_t nd_opt_reserved;
- uint32_t nd_opt_lifetime;
+ uint8_t nd_opt_rdnss_type;
+ uint8_t nd_opt_rdnss_len;
+ uint16_t nd_opt_rdnss_reserved;
+ uint32_t nd_opt_rdnss_lifetime;
/* followed by n (16 byte) entries */
} __attribute__((__packed__));
+#endif
extern const char *rtadv_pref_strs[];