HEADSUP: arp-v2 has been committed

Ian FREISLICH ianf at clue.co.za
Mon Dec 22 00:29:30 PST 2008


Erwin Lansing <erwin at freebsd.org> wrote:
> >   RTF_WASCLONE and RTF_LLINFO routing flags. The userland applications 
> >   such as "arp" and "ndp" have been modified to reflect those changes.
> > so I guess it's not so easy.  
> > How many other ports are affected?
> The latest full run with HEAD from a few days back hasn't quite finished
> yet, so there might turn up a few more, but so far it's just a handful:
> net/libdnet
> devel/libpdel
> net-mgmt/net-snmp
> net/netwib
> net/p5-Net-RawIP
> net-mgmt/net-snmp4
> emulators/wine

You can add net/quagga to that list as well.

The following patch solves it, and you'll need patch-lib-sockopt.c
for multicast to work correctly on -CURRENT.

--
Ian Freislich

-------------- next part --------------
--- zebra/kernel_socket.c.orig	2008-12-22 09:59:00.000000000 +0200
+++ zebra/kernel_socket.c	2008-12-22 09:59:10.000000000 +0200
@@ -173,9 +173,13 @@
 #ifdef RTF_MASK
   {RTF_MASK,      "MASK"},
 #endif /* RTF_MASK */
+#ifdef RTF_CLONING
   {RTF_CLONING,   "CLONING"},
+#endif /* RTF_CLONING */
   {RTF_XRESOLVE,  "XRESOLVE"},
+#ifdef RTF_LLINFO
   {RTF_LLINFO,    "LLINFO"},
+#endif /* RTF_LLINFO */
   {RTF_STATIC,    "STATIC"},
   {RTF_BLACKHOLE, "BLACKHOLE"},
 #ifdef RTF_PRIVATE
@@ -999,9 +1003,11 @@
   if (gate && message == RTM_ADD)
     msg.rtm.rtm_flags |= RTF_GATEWAY;
 
+#ifdef RTF_CLONING
   if (! gate && message == RTM_ADD && ifp &&
       (ifp->flags & IFF_POINTOPOINT) == 0)
     msg.rtm.rtm_flags |= RTF_CLONING;
+#endif */ RTF_CLONING */
 
   /* If no protocol specific gateway is specified, use link
      address for gateway. */
-------------- next part --------------
--- lib/sockopt.c.orig	2007-08-21 18:32:56.000000000 +0200
+++ lib/sockopt.c	2008-08-13 09:07:20.000000000 +0200
@@ -231,6 +231,7 @@
       else
 	mreqn.imr_address = if_addr;
       
+	mreqn.imr_address = if_addr;
       ret = setsockopt(sock, IPPROTO_IP, optname,
 		       (void *)&mreqn, sizeof(mreqn));
       if ((ret < 0) && (optname == IP_ADD_MEMBERSHIP) && (errno == EADDRINUSE))


More information about the freebsd-net mailing list