From b68880c69f3dc40661c678d78af7a41df92072c3 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Fri, 5 Feb 2010 07:01:51 +0100 Subject: 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. --- zebra/rtadv.c | 8 ++++---- zebra/rtadv.h | 10 ++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'zebra') 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[]; -- cgit v1.2.3