Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 May 2007 08:25:54 +0600
From:      Boris Kovalenko <boris@tagnet.ru>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/112797: [MAINTAINER UPDATE] net/quagga: [SUMMARIZE CHANGES]
Message-ID:  <E1Hpb7K-0009ux-M2@boris.nikom.ru>
Resent-Message-ID: <200705200230.l4K2U4Ee099688@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         112797
>Category:       ports
>Synopsis:       [MAINTAINER UPDATE] net/quagga: [SUMMARIZE CHANGES]
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Sun May 20 02:30:03 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Boris Kovalenko
>Release:        FreeBSD 6.2-RELEASE i386
>Organization:
JSC "TAGNet"
>Environment:
System: FreeBSD boris.nikom.ru 6.2-RELEASE FreeBSD 6.2-RELEASE #7: Mon Jan 15 12:31:11 YEKT 2007
>Description:
[DESCRIBE CHANGES]
    Fix PtP interface detection. Thanks to Andrew Filonov <aef at bryansktel.ru>
    
Added file(s):
- files/patch-zebra-kernel_socket.c

Generated with FreeBSD Port Tools 0.77
>How-To-Repeat:
>Fix:

--- quagga-0.99.7_1.patch begins here ---
diff -ruN --exclude=CVS /usr/ports/net/quagga/Makefile /usr/ports/net/quagga.new/Makefile
--- /usr/ports/net/quagga/Makefile	Mon May  7 13:10:20 2007
+++ /usr/ports/net/quagga.new/Makefile	Sun May 20 08:19:52 2007
@@ -7,6 +7,7 @@
 
 PORTNAME=	quagga
 PORTVERSION=	0.99.7
+PORTREVISION=	1
 CATEGORIES=	net ipv6
 MASTER_SITES=	http://quagga.net/download/ \
 		http://www.ru.quagga.net/download/ \
diff -ruN --exclude=CVS /usr/ports/net/quagga/files/patch-zebra-kernel_socket.c /usr/ports/net/quagga.new/files/patch-zebra-kernel_socket.c
--- /usr/ports/net/quagga/files/patch-zebra-kernel_socket.c	Thu Jan  1 05:00:00 1970
+++ /usr/ports/net/quagga.new/files/patch-zebra-kernel_socket.c	Sun May 20 08:19:17 2007
@@ -0,0 +1,132 @@
+--- zebra/kernel_socket.c	2007/05/10 02:38:52	1.43
++++ zebra/kernel_socket.c	2007/05/17 15:00:41	1.44
+@@ -494,6 +494,8 @@
+ 		short *ifnlen)
+ {
+   caddr_t pnt, end;
++  union sockunion dst;
++  union sockunion gateway;
+ 
+   pnt = (caddr_t)(ifm + 1);
+   end = ((caddr_t)ifm) + ifm->ifam_msglen;
+@@ -502,10 +504,12 @@
+   memset (mask, 0, sizeof (union sockunion));
+   memset (addr, 0, sizeof (union sockunion));
+   memset (brd, 0, sizeof (union sockunion));
++  memset (&dst, 0, sizeof (union sockunion));
++  memset (&gateway, 0, sizeof (union sockunion));
+ 
+   /* We fetch each socket variable into sockunion. */
+-  RTA_ADDR_GET (NULL, RTA_DST, ifm->ifam_addrs, pnt);
+-  RTA_ADDR_GET (NULL, RTA_GATEWAY, ifm->ifam_addrs, pnt);
++  RTA_ADDR_GET (&dst, RTA_DST, ifm->ifam_addrs, pnt);
++  RTA_ADDR_GET (&gateway, RTA_GATEWAY, ifm->ifam_addrs, pnt);
+   RTA_ATTR_GET (mask, RTA_NETMASK, ifm->ifam_addrs, pnt);
+   RTA_ADDR_GET (NULL, RTA_GENMASK, ifm->ifam_addrs, pnt);
+   RTA_NAME_GET (ifname, RTA_IFP, ifm->ifam_addrs, pnt, *ifnlen);
+@@ -519,31 +523,43 @@
+         {
+ 	case AF_INET:
+ 	  {
+-	    char buf[2][INET_ADDRSTRLEN];
++	    char buf[4][INET_ADDRSTRLEN];
+ 	    zlog_debug ("%s: ifindex %d, ifname %s, ifam_addrs 0x%x, "
+-			"addr %s/%d broad %s", 
+-			__func__, ifm->ifam_index, 
++			"ifam_flags 0x%x, addr %s/%d broad %s dst %s "
++			"gateway %s",
++			__func__, ifm->ifam_index,
+ 			(ifnlen ? ifname : "(nil)"), ifm->ifam_addrs,
++			ifm->ifam_flags,
+ 			inet_ntop(AF_INET,&addr->sin.sin_addr,
+ 			          buf[0],sizeof(buf[0])),
+ 			ip_masklen(mask->sin.sin_addr),
+ 			inet_ntop(AF_INET,&brd->sin.sin_addr,
+-			          buf[1],sizeof(buf[1])));
++			          buf[1],sizeof(buf[1])),
++			inet_ntop(AF_INET,&dst.sin.sin_addr,
++			          buf[2],sizeof(buf[2])),
++			inet_ntop(AF_INET,&gateway.sin.sin_addr,
++			          buf[3],sizeof(buf[3])));
+ 	  }
+ 	  break;
+ #ifdef HAVE_IPV6
+ 	case AF_INET6:
+ 	  {
+-	    char buf[2][INET6_ADDRSTRLEN];
++	    char buf[4][INET6_ADDRSTRLEN];
+ 	    zlog_debug ("%s: ifindex %d, ifname %s, ifam_addrs 0x%x, "
+-			"addr %s/%d broad %s", 
++			"ifam_flags 0x%x, addr %s/%d broad %s dst %s "
++			"gateway %s",
+ 			__func__, ifm->ifam_index, 
+ 			(ifnlen ? ifname : "(nil)"), ifm->ifam_addrs,
++			ifm->ifam_flags,
+ 			inet_ntop(AF_INET6,&addr->sin6.sin6_addr,
+ 			          buf[0],sizeof(buf[0])),
+ 			ip6_masklen(mask->sin6.sin6_addr),
+ 			inet_ntop(AF_INET6,&brd->sin6.sin6_addr,
+-			          buf[1],sizeof(buf[1])));
++			          buf[1],sizeof(buf[1])),
++			inet_ntop(AF_INET6,&dst.sin6.sin6_addr,
++			          buf[2],sizeof(buf[2])),
++			inet_ntop(AF_INET6,&gateway.sin6.sin6_addr,
++			          buf[3],sizeof(buf[3])));
+ 	  }
+ 	  break;
+ #endif /* HAVE_IPV6 */
+@@ -554,7 +570,7 @@
+ 	  break;
+         }
+     }
+-  
++
+   /* Assert read up end point matches to end point */
+   if (pnt != end)
+     zlog_warn ("ifam_read() does't read all socket data");
+@@ -569,6 +585,7 @@
+   char ifname[INTERFACE_NAMSIZ];
+   short ifnlen = 0;
+   char isalias = 0;
++  int flags = 0;
+   
+   ifname[0] = ifname[INTERFACE_NAMSIZ - 1] = '\0';
+   
+@@ -585,6 +602,12 @@
+   if (ifnlen && strncmp (ifp->name, ifname, INTERFACE_NAMSIZ))
+     isalias = 1;
+   
++  /* N.B. The info in ifa_msghdr does not tell us whether the RTA_BRD
++     field contains a broadcast address or a peer address, so we are forced to
++     rely upon the interface type. */
++  if (if_is_pointopoint(ifp))
++    SET_FLAG(flags, ZEBRA_IFA_PEER);
++
+ #if 0
+   /* it might seem cute to grab the interface metric here, however
+    * we're processing an address update message, and so some systems
+@@ -599,12 +622,12 @@
+     {
+     case AF_INET:
+       if (ifam->ifam_type == RTM_NEWADDR)
+-	connected_add_ipv4 (ifp, 0, &addr.sin.sin_addr, 
++	connected_add_ipv4 (ifp, flags, &addr.sin.sin_addr, 
+ 			    ip_masklen (mask.sin.sin_addr),
+ 			    &brd.sin.sin_addr,
+ 			    (isalias ? ifname : NULL));
+       else
+-	connected_delete_ipv4 (ifp, 0, &addr.sin.sin_addr, 
++	connected_delete_ipv4 (ifp, flags, &addr.sin.sin_addr, 
+ 			       ip_masklen (mask.sin.sin_addr),
+ 			       &brd.sin.sin_addr);
+       break;
+@@ -616,8 +639,7 @@
+ 	SET_IN6_LINKLOCAL_IFINDEX (addr.sin6.sin6_addr, 0);
+ 
+       if (ifam->ifam_type == RTM_NEWADDR)
+-	connected_add_ipv6 (ifp, 0,
+-			    &addr.sin6.sin6_addr, 
++	connected_add_ipv6 (ifp, flags, &addr.sin6.sin6_addr, 
+ 			    ip6_masklen (mask.sin6.sin6_addr),
+ 			    &brd.sin6.sin6_addr,
+ 			    (isalias ? ifname : NULL));
--- quagga-0.99.7_1.patch ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1Hpb7K-0009ux-M2>