sys/netinet6/nd6.c: add ND6_IFF_ACCEPT_RTADV flag
Hiroki Sato
hrs at allbsd.org
Tue Dec 28 02:42:09 PST 2004
Hi,
Here is a patch to add the new flag ND6_IFF_ACCEPT_RTADV to
implement a knob to contorol whether to accept RAs in per-interface
basis (obtained from KAME via FreeBSD).
Add a new flag "ND6_IFF_ACCEPT_RTADV" into nd_ifinfo to
control whether to accept RAs per-interface basis.
This flag is enabled by default.
Obtained from: KAME (via FreeBSD)
Index: nd6.c
===================================================================
RCS file: /cvs/src/sys/netinet6/nd6.c,v
retrieving revision 1.12
diff -d -u -I\$FreeBSD:.*\$ -I\$NetBSD:.*\$ -I\$OpenBSD:.*\$ -I\$DragonFly:.*\$ -I\$Id:.*\$ -I\$hrs:.*\$ -r1.12 nd6.c
--- nd6.c 21 Dec 2004 02:54:47 -0000 1.12
+++ nd6.c 28 Dec 2004 09:41:21 -0000
@@ -192,7 +192,12 @@
ND.reachable = ND_COMPUTE_RTIME(ND.basereachable);
ND.retrans = RETRANS_TIMER;
ND.receivedra = 0;
- ND.flags = ND6_IFF_PERFORMNUD;
+ /*
+ * Note that the default value of ip6_accept_rtadv is 0, which means
+ * we won't accept RAs by default even if we set ND6_IFF_ACCEPT_RTADV
+ * here.
+ */
+ ND.flags = (ND6_IFF_PERFORMNUD | ND6_IFF_ACCEPT_RTADV);
nd6_setmtu(ifp);
#undef ND
}
Index: nd6.h
===================================================================
RCS file: /cvs/src/sys/netinet6/nd6.h,v
retrieving revision 1.4
diff -d -u -I\$FreeBSD:.*\$ -I\$NetBSD:.*\$ -I\$OpenBSD:.*\$ -I\$DragonFly:.*\$ -I\$Id:.*\$ -I\$hrs:.*\$ -r1.4 nd6.h
--- nd6.h 22 Nov 2003 19:30:56 -0000 1.4
+++ nd6.h 28 Dec 2004 09:41:40 -0000
@@ -88,6 +88,7 @@
};
#define ND6_IFF_PERFORMNUD 0x1
+#define ND6_IFF_ACCEPT_RTADV 0x2
struct in6_nbrinfo {
char ifname[IFNAMSIZ]; /* if name, e.g. "en0" */
Index: nd6_rtr.c
===================================================================
RCS file: /cvs/src/sys/netinet6/nd6_rtr.c,v
retrieving revision 1.6
diff -d -u -I\$FreeBSD:.*\$ -I\$NetBSD:.*\$ -I\$OpenBSD:.*\$ -I\$DragonFly:.*\$ -I\$Id:.*\$ -I\$hrs:.*\$ -r1.6 nd6_rtr.c
--- nd6_rtr.c 21 Dec 2004 02:54:47 -0000 1.6
+++ nd6_rtr.c 28 Dec 2004 09:42:41 -0000
@@ -218,8 +218,15 @@
union nd_opts ndopts;
struct nd_defrouter *dr;
+ /*
+ * We only accept RAs only when
+ * the system-wide variable allows the acceptance, and
+ * per-interface variable allows RAs on the receiving interface.
+ */
if (ip6_accept_rtadv == 0)
goto freeit;
+ if (!(ndi->flags & ND6_IFF_ACCEPT_RTADV))
+ goto freeit;
if (ip6->ip6_hlim != 255) {
nd6log((LOG_ERR,
Attachment:
pgp00023.pgp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pgp00023.pgp
Type: application/octet-stream
Size: 187 bytes
Desc: "Description: PGP signature"
URL: <http://lists.dragonflybsd.org/pipermail/submit/attachments/20041228/df9a77b6/attachment-0018.obj>
More information about the Submit
mailing list