[-]
[+]
|
Changed |
radvd.changes
|
|
[-]
[+]
|
Changed |
radvd.spec
^
|
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/CHANGES
^
|
@@ -1,3 +1,10 @@
+2014/03/18 release 1.10.0
+
+2014/03/12 dropped --singleprocess option completely
+ cleaned up some spelling error in the man pages
+
+2014/03/05 6LoWPAN-ND (RFC6775) support <Bhadram>
+
2014/02/28 Bug fix 1048653 - UnicastOnly option still sends multicast RA
2014/01/10 use -no-strict-aliasing
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/Makefile.am
^
|
@@ -69,7 +69,7 @@
AM_CFLAGS = \
-Wall \
- -Wcast-align \
+ -Wno-cast-align \
-Wcast-qual \
-Wpointer-arith \
-Wmissing-declarations \
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/Makefile.in
^
|
@@ -418,7 +418,7 @@
AM_YFLAGS = -d
AM_CFLAGS = \
-Wall \
- -Wcast-align \
+ -Wno-cast-align \
-Wcast-qual \
-Wpointer-arith \
-Wmissing-declarations \
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/VERSION
^
|
@@ -3,4 +3,4 @@
#
# If adding rcX, be sure to separate with a '-'
#
-1.9.9
+1.10.0
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/config.h.in
^
|
@@ -112,3 +112,6 @@
/* whether compiling on Linux, glibc>=2.8 does not expose in6_pktinfo
otherwise.. */
#undef _GNU_SOURCE
+
+/* OS X 10.9 won't build radvd without this */
+#undef __APPLE_USE_RFC_2292
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/configure
^
|
@@ -2929,6 +2929,9 @@
arch=bsd44
;;
*darwin*)
+
+$as_echo "#define __APPLE_USE_RFC_2292 1" >>confdefs.h
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: bsd44 (darwin)" >&5
$as_echo "bsd44 (darwin)" >&6; }
arch=bsd44
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/configure.ac
^
|
@@ -31,6 +31,7 @@
arch=bsd44
;;
*darwin*)
+ AC_DEFINE([__APPLE_USE_RFC_2292], [1], [OS X 10.9 won't build radvd without this])
AC_MSG_RESULT([bsd44 (darwin)])
arch=bsd44
;;
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/device-linux.c
^
|
@@ -69,6 +69,11 @@
dlog(LOG_DEBUG, 3, "hardware type for %s is ARPHRD_ARCNET", iface->Name);
break;
#endif /* ARPHDR_ARCNET */
+ case ARPHRD_IEEE802154:
+ iface->if_hwaddr_len = 64;
+ iface->if_prefix_len = 64;
+ dlog(LOG_DEBUG, 3, "hardware type for %s is ARPHRD_IEEE802154", iface->Name);
+ break;
default:
iface->if_hwaddr_len = -1;
iface->if_prefix_len = -1;
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/gram.y
^
|
@@ -24,6 +24,8 @@
struct AdvRoute *route = NULL;
struct AdvRDNSS *rdnss = NULL;
struct AdvDNSSL *dnssl = NULL;
+struct AdvLowpanCo *lowpanco = NULL;
+struct AdvAbro *abro = NULL;
extern char *conf_file;
extern int num_lines;
@@ -66,6 +68,8 @@
%token T_RDNSS
%token T_DNSSL
%token T_CLIENTS
+%token T_LOWPANCO
+%token T_ABRO
%token <str> STRING
%token <num> NUMBER
@@ -123,6 +127,17 @@
%token T_AdvMobRtrSupportFlag
+%token T_AdvContextLength
+%token T_AdvContextCompressionFlag
+%token T_AdvContextID
+%token T_AdvLifeTime
+%token T_AdvContextPrefix
+
+%token T_AdvVersionLow
+%token T_AdvVersionHigh
+%token T_AdvValidLifeTime
+%token T_Adv6LBRaddress
+
%token T_BAD_TOKEN
%type <str> name
@@ -131,6 +146,8 @@
%type <rinfo> routedef
%type <rdnssinfo> rdnssdef
%type <dnsslinfo> dnssldef
+%type <lowpancoinfo> lowpancodef
+%type <abroinfo> abrodef
%type <num> number_or_infinity
%union {
@@ -144,6 +161,8 @@
struct AdvRDNSS *rdnssinfo;
struct AdvDNSSL *dnsslinfo;
struct Clients *ainfo;
+ struct AdvLowpanCo *lowpancoinfo;
+ struct AdvAbro *abroinfo;
};
%%
@@ -231,6 +250,8 @@
| routedef { ADD_TO_LL(struct AdvRoute, AdvRouteList, $1); }
| rdnssdef { ADD_TO_LL(struct AdvRDNSS, AdvRDNSSList, $1); }
| dnssldef { ADD_TO_LL(struct AdvDNSSL, AdvDNSSLList, $1); }
+ | lowpancodef { ADD_TO_LL(struct AdvLowpanCo, AdvLowpanCoList, $1); }
+ | abrodef { ADD_TO_LL(struct AdvAbro, AdvAbroList, $1); }
;
ifaceval : T_MinRtrAdvInterval NUMBER ';'
@@ -903,6 +924,101 @@
}
;
+lowpancodef : lowpancohead '{' optional_lowpancoplist '}' ';'
+ {
+ $$ = lowpanco;
+ lowpanco = NULL;
+ }
+ ;
+
+lowpancohead : T_LOWPANCO
+ {
+ lowpanco = malloc(sizeof(struct AdvLowpanCo));
+
+ if (lowpanco == NULL) {
+ flog(LOG_CRIT, "malloc failed: %s", strerror(errno));
+ ABORT;
+ }
+
+ memset(lowpanco, 0, sizeof(struct AdvLowpanCo));
+ }
+ ;
+
+optional_lowpancoplist:
+ | lowpancoplist
+ ;
+
+lowpancoplist : lowpancoplist lowpancoparms
+ | lowpancoparms
+ ;
+
+lowpancoparms : T_AdvContextLength NUMBER ';'
+ {
+ lowpanco->ContextLength = $2;
+ }
+ | T_AdvContextCompressionFlag SWITCH ';'
+ {
+ lowpanco->ContextCompressionFlag = $2;
+ }
+ | T_AdvContextID NUMBER ';'
+ {
+ lowpanco->AdvContextID = $2;
+ }
+ | T_AdvLifeTime NUMBER ';'
+ {
+ lowpanco->AdvLifeTime = $2;
+ }
+ ;
+
+abrodef : abrohead '{' optional_abroplist '}' ';'
+ {
+ $$ = abro;
+ abro = NULL;
+ }
+ ;
+
+abrohead : T_ABRO IPV6ADDR '/' NUMBER
+ {
+ if ($4 > MAX_PrefixLen)
+ {
+ flog(LOG_ERR, "invalid abro prefix length in %s, line %d", conf_file, num_lines);
+ ABORT;
+ }
+
+ abro = malloc(sizeof(struct AdvAbro));
+
+ if (abro == NULL) {
+ flog(LOG_CRIT, "malloc failed: %s", strerror(errno));
+ ABORT;
+ }
+
+ memset(abro, 0, sizeof(struct AdvAbro));
+ memcpy(&abro->LBRaddress, $2, sizeof(struct in6_addr));
+ }
+ ;
+
+optional_abroplist:
+ | abroplist
+ ;
+
+abroplist : abroplist abroparms
+ | abroparms
+ ;
+
+abroparms : T_AdvVersionLow NUMBER ';'
+ {
+ abro->Version[1] = $2;
+ }
+ | T_AdvVersionHigh NUMBER ';'
+ {
+ abro->Version[0] = $2;
+ }
+ | T_AdvValidLifeTime NUMBER ';'
+ {
+ abro->ValidLifeTime = $2;
+ }
+ ;
+
number_or_infinity : NUMBER
{
$$ = $1;
@@ -975,6 +1091,12 @@
free(dnssl->AdvDNSSLSuffixes);
free(dnssl);
}
+
+ if(lowpanco)
+ free(lowpanco);
+
+ if(abro)
+ free(abro);
}
static void
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/includes.h
^
|
@@ -100,4 +100,30 @@
#include <ifaddrs.h>
#endif
+/* Uclibc : include/netinet/icmpv6.h - Added by Bhadram*/
+#define ND_OPT_ARO 33
+#define ND_OPT_6CO 34
+#define ND_OPT_ABRO 35
+
+struct nd_opt_abro {
+ uint8_t nd_opt_abro_type;
+ uint8_t nd_opt_abro_len;
+ uint16_t nd_opt_abro_ver_low;
+ uint16_t nd_opt_abro_ver_high;
+ uint16_t nd_opt_abro_valid_lifetime;
+ struct in6_addr nd_opt_abro_6lbr_address;
+};
+
+struct nd_opt_6co {
+ uint8_t nd_opt_6co_type;
+ uint8_t nd_opt_6co_len;
+ uint8_t nd_opt_6co_context_len;
+ uint8_t nd_opt_6co_res:3;
+ uint8_t nd_opt_6co_c:1;
+ uint8_t nd_opt_6co_cid:4;
+ uint16_t nd_opt_6co_reserved;
+ uint16_t nd_opt_6co_valid_lifetime;
+ struct in6_addr nd_opt_6co_con_prefix;
+}; /*Added by Bhadram */
+
#endif /* INCLUDES_H */
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/radvd.8.man
^
|
@@ -33,8 +33,9 @@
solicitations and sends router advertisements as described in
"Neighbor Discovery for IP Version 6 (IPv6)" (RFC 4861).
With these advertisements hosts can automatically configure their
-addresses and some other parameters. They also can choose a default
-router based on these advertisements.
+addresses and some other parameters. It also defines "Neighbor Discovery
+Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)" (RFC6775).
+They also can choose a default router based on these advertisements.
Note that if debugging is not enabled,
.B radvd
@@ -62,15 +63,6 @@
.BR "\-h" , " \-\-help"
Displays a short usage description and then aborts.
.TP
-.BR "\-s" , " \-\-singleprocess"
-On Linux if
-.I username
-is specified, privilege separation is enabled and there will be
-two processes.
-This option disables privilege separation, and as a result,
-the non-privileged radvd process does not have permissions to
-change interface configuration.
-.TP
.BR "\-c" , " \-\-configtest"
Test configuration and do startup tests and then exit.
.TP
@@ -178,10 +170,11 @@
Pedro Roque <roque@di.fc.ul.pt> - wrote first version for Linux
Lars Fenneberg <lf@elemental.net> - previous maintainer
Nathan Lutchansky <lutchann@litech.org> - previous maintainer
-Reuben Hawkins <reubenhwk@gmail.com> - current maintainer
+Pekka Savola <pekkas@netcore.fi> - previous maintainer
Craig Metz <cmetz@inner.net> - port to NRL's IPv6 code for BSD4.4
Marko Myllynen <myllynen@lut.fi> - RFC 2461 update, Mobile IPv6 support
Jim Paris <jim@jtan.com> - Privilege separation support
-Reuben Hawkins <reubenhwk@gmail.com> - Many fixes and cleanups
+Reuben Hawkins <reubenhwk@gmail.com> - current maintainer
Pierre Ossman <pierre@ossman.eu> - RFC6106 (DNSSL) support
+Varka Bhadram <varkabhadram@gmail.com> - 6LoWPAN-ND (RFC6775) support
.fi
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/radvd.c
^
|
@@ -59,7 +59,6 @@
{"chrootdir", 1, 0, 't'},
{"version", 0, 0, 'v'},
{"help", 0, 0, 'h'},
- {"singleprocess", 0, 0, 's'},
{"nodaemon", 0, 0, 'n'},
#ifdef HAVE_NETLINK
{"disablenetlink", 0, 0, 'L'},
@@ -131,7 +130,7 @@
pidfile = PATH_RADVD_PID;
/* parse args */
-#define OPTIONS_STR "d:C:l:m:p:t:u:vhcsn"
+#define OPTIONS_STR "d:C:l:m:p:t:u:vhcn"
#ifdef HAVE_GETOPT_LONG
while ((c = getopt_long(argc, argv, OPTIONS_STR, prog_opt, &opt_idx)) > 0)
#else
@@ -182,9 +181,6 @@
case 'c':
configtest = 1;
break;
- case 's':
- fprintf(stderr, "privsep is not optional. This options will be removed in a near future release.");
- break;
case 'n':
daemonize = 0;
break;
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/radvd.conf.5.man
^
|
@@ -31,6 +31,7 @@
list of route definitions
list of RDNSS definitions
list of DNSSL definitions
+ list of ABRO definitions
.B };
.fi
@@ -45,7 +46,7 @@
.B };
.fi
-Prefix can be network prefix or the address of the inferface.
+Prefix can be network prefix or the address of the interface.
The address of interface should be used when using Mobile IPv6
extensions.
@@ -106,6 +107,16 @@
.B };
.fi
+ABRO (Authoritative Border Router Option) definitions are of the form:
+
+.nf
+.BR "abro " prefix / "length " {
+ list of abro specific options
+.B };
+.fi
+
+Prefix can be network prefix or the address of the interface.
+
.SH INTERFACE SPECIFIC OPTIONS
.TP
@@ -546,6 +557,17 @@
Default: on
+.SH ABRO SPECIFIC OPTIONS
+
+.TP
+.BR "AdvValidLifeTime " seconds
+The time in units of that the set of border router information is valid.
+A value of all zero bits assumes a default value of 10,000(~one week).
+
+.TP
+.BR "AdvVersionLow, AdvVersionHigh " unsigned integer
+Both forms 32-bit unsigned version number corresponding to the set of information contained in RA message.
+
.SH EXAMPLES
.nf
@@ -561,7 +583,7 @@
.fi
It says that router advertisement daemon should advertise
-(AdvSendAdvert on;) the prefix 2001:db8:0:1:: which has a lenght of 64
+(AdvSendAdvert on;) the prefix 2001:db8:0:1:: which has a length of 64
on the interface eth0. Also the prefix should be marked as autonomous
(AdvAutonomous on;) and as on-link (AdvOnLink on;). All the other
options are left on their default values.
@@ -646,6 +668,24 @@
This may come in handy if you want to roll out IPv6 only partially because
some clients are broken or untested.
+For ABRO support
+.nf
+interface lowpan0
+{
+ AdvSendAdvert on;
+ UnicastOnly on;
+ AdvCurHopLimit 255;
+ prefix 2001:0db8:0100:f101::/64 {
+ AdvOnLink on;
+ AdvAutonomous on;
+ AdvRouterAddr on;
+ };
+ abro fe80::a200:0:0:1/64 {
+ AdvVersionLow 10;
+ AdvVersionHigh 2;
+ AdvValidLifeTime 2;
+ };
+};
.SH FILES
@@ -690,7 +730,9 @@
.PP
J. Jeong, S. Park, L. Beloeil, and S. Madanapalli, "IPv6 Router Advertisement Options for DNS Configuration",
RFC 6106, November 2010.
-
+.PP
+Z. Shelby, S. Chakrabarti, E. Nordmark and C. Bormann " Neighbor Discovery Optimization for IPv6 over Low-Power
+Wireless Personal Area Networks (6LoWPANs)", RFC 6775, November 2012.
.SH "SEE ALSO"
.BR radvd (8),
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/radvd.h
^
|
@@ -78,6 +78,10 @@
/* NEMO extensions */
int AdvMobRtrSupportFlag;
+ /* 6lowpan extension */
+ struct AdvLowpanCo *AdvLowpanCoList;
+ struct AdvAbro *AdvAbroList;
+
struct AdvPrefix *AdvPrefixList;
struct AdvRoute *AdvRouteList;
struct AdvRDNSS *AdvRDNSSList;
@@ -161,6 +165,24 @@
struct AdvDNSSL *next;
};
+struct AdvLowpanCo {
+ uint8_t ContextLength;
+ uint8_t ContextCompressionFlag;
+ uint8_t AdvContextID;
+ uint16_t AdvLifeTime;
+ struct in6_addr AdvContextPrefix;
+
+ struct AdvLowpanCo *next;
+};
+
+struct AdvAbro {
+ uint16_t Version[2];
+ uint16_t ValidLifeTime;
+ struct in6_addr LBRaddress;
+
+ struct AdvAbro *next;
+};
+
/* Mobile IPv6 extensions */
struct AdvInterval {
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/redhat/radvd.spec
^
|
@@ -5,7 +5,7 @@
Summary: A Router Advertisement daemon
Name: radvd
-Version: 1.9.9
+Version: 1.10.0
Release: 1
# The code includes the advertising clause, so it's GPL-incompatible
License: BSD with advertising
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/scanner.l
^
|
@@ -49,6 +49,8 @@
RDNSS { return T_RDNSS; }
DNSSL { return T_DNSSL; }
clients { return T_CLIENTS; }
+lowpanco { return T_LOWPANCO; }
+abro { return T_ABRO; }
IgnoreIfMissing { return T_IgnoreIfMissing; }
AdvSendAdvert { return T_AdvSendAdvert; }
@@ -99,6 +101,17 @@
AdvMobRtrSupportFlag { return T_AdvMobRtrSupportFlag; }
+AdvContextLength { return T_AdvContextLength; }
+AdvContextCompressionFlag { return T_AdvContextCompressionFlag; }
+AdvContextID { return T_AdvContextID; }
+AdvLifeTIme { return T_AdvLifeTime; }
+AdvContextPrefix { return T_AdvContextPrefix; }
+
+AdvVersionLow { return T_AdvVersionLow; }
+AdvVersionHigh { return T_AdvVersionHigh; }
+AdvValidLifeTime { return T_AdvValidLifeTime; }
+Adv6LBRaddress { return T_Adv6LBRaddress; }
+
{addr} {
static struct in6_addr addr;
if (inet_pton(AF_INET6, yytext, &addr) < 1) {
|
[-]
[+]
|
Changed |
radvd-1.10.0.tar.bz2/send.c
^
|
@@ -116,6 +116,8 @@
struct AdvRoute *route;
struct AdvRDNSS *rdnss;
struct AdvDNSSL *dnssl;
+ struct AdvLowpanCo *lowpanco;
+ struct AdvAbro *abroo;
struct timeval time_now;
time_t secs_since_last_ra;
char addr_str[INET6_ADDRSTRLEN];
@@ -245,7 +247,8 @@
memcpy(&pinfo->nd_opt_pi_prefix, &prefix->Prefix, sizeof(struct in6_addr));
print_addr(&prefix->Prefix, addr_str);
- dlog(LOG_DEBUG, 5, "adding prefix %s to advert for %s", addr_str, iface->Name);
+ dlog(LOG_DEBUG, 5, "adding prefix %s to advert for %s with %u seconds(s) valid lifetime and %u seconds(s) preferred time",
+ addr_str, iface->Name, ntohl(pinfo->nd_opt_pi_valid_time), ntohl(pinfo->nd_opt_pi_preferred_time));
}
prefix = prefix->next;
@@ -401,23 +404,48 @@
*/
if (iface->AdvSourceLLAddress && iface->if_hwaddr_len > 0) {
- uint8_t *ucp;
- unsigned int i;
+ /*
+ 4.6.1. Source/Target Link-layer Address
- ucp = (uint8_t *) (buff + len);
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Link-Layer Address ...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Fields:
+
+ Type
+ 1 for Source Link-layer Address
+ 2 for Target Link-layer Address
+
+ Length The length of the option (including the type and
+ length fields) in units of 8 octets. For example,
+ the length for IEEE 802 addresses is 1 [IPv6-
+ ETHER].
+
+ Link-Layer Address
+ The variable length link-layer address.
+
+ The content and format of this field (including
+ byte and bit ordering) is expected to be specified
+ in specific documents that describe how IPv6
+ operates over different link layers. For instance,
+ [IPv6-ETHER].
+
+ */
+ /* +2 for the ND_OPT_SOURCE_LINKADDR and the length (each occupy one byte) */
+ size_t const sllao_bytes = (iface->if_hwaddr_len / 8) + 2;
+ size_t const sllao_len = (sllao_bytes + 7) / 8;
+ uint8_t *sllao = (uint8_t *) (buff + len);
- send_ra_inc_len(&len, 2 * sizeof(uint8_t));
+ send_ra_inc_len(&len, sllao_len * 8);
- *ucp++ = ND_OPT_SOURCE_LINKADDR;
- *ucp++ = (uint8_t) ((iface->if_hwaddr_len + 16 + 63) >> 6);
+ *sllao++ = ND_OPT_SOURCE_LINKADDR;
+ *sllao++ = (uint8_t) sllao_len;
- i = (iface->if_hwaddr_len + 7) >> 3;
-
- buff_dest = len;
-
- send_ra_inc_len(&len, i);
-
- memcpy(buff + buff_dest, iface->if_hwaddr, i);
+ /* if_hwaddr_len is in bits, so divide by 8 to get the byte count. */
+ memcpy(sllao, iface->if_hwaddr, iface->if_hwaddr_len / 8);
}
/*
@@ -449,8 +477,7 @@
* Dynamic Home Agent Address Discovery
*/
- if (iface->AdvHomeAgentInfo && (iface->AdvMobRtrSupportFlag || iface->HomeAgentPreference != 0 || iface->HomeAgentLifetime != iface->AdvDefaultLifetime))
- {
+ if (iface->AdvHomeAgentInfo && (iface->AdvMobRtrSupportFlag || iface->HomeAgentPreference != 0 || iface->HomeAgentLifetime != iface->AdvDefaultLifetime)) {
struct HomeAgentInfo ha_info;
ha_info.type = ND_OPT_HOME_AGENT_INFO;
ha_info.length = 1;
@@ -463,6 +490,47 @@
memcpy(buff + buff_dest, &ha_info, sizeof(ha_info));
}
+ lowpanco = iface->AdvLowpanCoList;
+
+ /*
+ * Add 6co option
+ */
+
+ if (lowpanco) {
+ struct nd_opt_6co *co;
+ co = (struct nd_opt_6co *)(buff + len);
+
+ send_ra_inc_len(&len, sizeof(*co));
+
+ co->nd_opt_6co_type = ND_OPT_6CO;
+ co->nd_opt_6co_len = 3;
+ co->nd_opt_6co_context_len = lowpanco->ContextLength;
+ co->nd_opt_6co_c = lowpanco->ContextCompressionFlag;
+ co->nd_opt_6co_cid = lowpanco->AdvContextID;
+ co->nd_opt_6co_valid_lifetime = lowpanco->AdvLifeTime;
+ co->nd_opt_6co_con_prefix = lowpanco->AdvContextPrefix;
+ }
+
+ abroo = iface->AdvAbroList;
+
+ /*
+ * Add ABRO option
+ */
+
+ if (abroo) {
+ struct nd_opt_abro *abro;
+ abro = (struct nd_opt_abro *)(buff + len);
+
+ send_ra_inc_len(&len, sizeof(*abro));
+
+ abro->nd_opt_abro_type = ND_OPT_ABRO;
+ abro->nd_opt_abro_len = 3;
+ abro->nd_opt_abro_ver_low = abroo->Version[1];
+ abro->nd_opt_abro_ver_high = abroo->Version[0];
+ abro->nd_opt_abro_valid_lifetime = abroo->ValidLifeTime;
+ abro->nd_opt_abro_6lbr_address = abroo->LBRaddress;
+ }
+
err = really_send(dest, iface->if_index, iface->if_addr, buff, len);
if (err < 0) {
|