[Midnightbsd-cvs] mports: avahi-app/files: oops missed some stuff

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Wed Sep 17 16:01:34 EDT 2008


Log Message:
-----------
oops missed some stuff

Added Files:
-----------
    mports/net/avahi-app/files:
        patch-avahi-autoipd_main.c (r1.3)
        patch-avahi-core_iface-pfroute.c (r1.1)
        patch-initscript_freebsd_Makefile.in (r1.1)

-------------- next part --------------
--- /dev/null
+++ net/avahi-app/files/patch-initscript_freebsd_Makefile.in
@@ -0,0 +1,33 @@
+--- initscript/freebsd/Makefile.in.orig	2008-07-03 15:05:53.000000000 -0500
++++ initscript/freebsd/Makefile.in	2008-07-03 15:07:05.000000000 -0500
+@@ -333,12 +333,12 @@
+ 	avahi-dnsconfd.sh.in
+ 
+ initd_SCRIPTS = \
+-	avahi-daemon.sh \
+-	avahi-dnsconfd.sh
++	avahi-daemon \
++	avahi-dnsconfd
+ 
+ CLEANFILES = \
+-	avahi-daemon.sh \
+-	avahi-dnsconfd.sh
++	avahi-daemon \
++	avahi-dnsconfd
+ 
+ all: all-am
+ 
+@@ -531,11 +531,11 @@
+ 	uninstall uninstall-am uninstall-initdSCRIPTS
+ 
+ 
+-avahi-daemon.sh: avahi-daemon.sh.in
++avahi-daemon: avahi-daemon.sh.in
+ 	sed -e 's, at sbindir\@,$(sbindir),g' $< > $@
+ 	chmod +x $@
+ 
+-avahi-dnsconfd.sh: avahi-dnsconfd.sh.in
++avahi-dnsconfd: avahi-dnsconfd.sh.in
+ 	sed \
+ 	-e 's, at sbindir\@,$(sbindir),g' \
+ 	-e 's, at sysconfdir\@,$(sysconfdir),g' \
--- /dev/null
+++ net/avahi-app/files/patch-avahi-core_iface-pfroute.c
@@ -0,0 +1,77 @@
+--- avahi-core/iface-pfroute.c.orig	2007-09-03 08:32:41.000000000 -0400
++++ avahi-core/iface-pfroute.c	2008-04-06 15:06:36.000000000 -0400
+@@ -125,7 +125,7 @@ static void rtm_addr(struct rt_msghdr *r
+   int raddr_valid = 0;
+   struct ifa_msghdr *ifam = (struct ifa_msghdr *) rtm;
+   char *cp = (char *)(ifam + 1);
+-  int addrs = ifam->ifam_addrs;
++  char *cp0;
+   int i;
+   int prefixlen = 0;
+   struct sockaddr *sa  =NULL;
+@@ -135,17 +135,30 @@ static void rtm_addr(struct rt_msghdr *r
+     ((struct sockaddr *)cp)->sa_family = AF_INET;
+ #endif
+ 
+-  if(((struct sockaddr *)cp)->sa_family != AF_INET && ((struct sockaddr *)cp)->sa_family != AF_INET6)
++  for (cp0 = cp, i = 0; i < RTAX_MAX; i++) {
++    if (!(ifam->ifam_addrs & (1<<i)))
++      continue;
++    sa = (struct sockaddr *)cp;
++    if (i == RTAX_IFA)
++      break;
++#ifdef SA_SIZE
++    cp += SA_SIZE(sa);
++#else
++    ADVANCE(cp, sa);
++#endif
++  }
++
++  if(sa->sa_family != AF_INET && sa->sa_family != AF_INET6)
+     return;
+ 
+-  if (!(iface = avahi_interface_monitor_get_interface(m, (AvahiIfIndex) ifam->ifam_index, avahi_af_to_proto(((struct sockaddr *)cp)->sa_family))))
++  if (!(iface = avahi_interface_monitor_get_interface(m, (AvahiIfIndex) ifam->ifam_index, avahi_af_to_proto(sa->sa_family))))
+     return;
+ 
+-  raddr.proto = avahi_af_to_proto(((struct sockaddr *)cp)->sa_family);
++  raddr.proto = avahi_af_to_proto(sa->sa_family);
+   
+-  for(i = 0; addrs != 0 && i < RTAX_MAX; addrs &= ~(1<<i), i++)
++  for(cp = cp0, i = 0; i < RTAX_MAX; i++)
+     {
+-      if (!(addrs & 1<<i))
++      if (!(ifam->ifam_addrs & (1<<i)))
+ 	continue;
+       sa = (struct sockaddr *)cp;
+ #ifdef HAVE_SYS_SYSCTL_H
+@@ -172,6 +185,13 @@ static void rtm_addr(struct rt_msghdr *r
+ 	  break;
+ 	case RTA_IFA:
+ 	  memcpy(raddr.data.data, &((struct sockaddr_in6 *)sa)->sin6_addr,  sizeof(struct in6_addr));
++#ifdef __KAME__
++	  if (IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)raddr.data.data))
++	    {
++	      ((struct in6_addr *)raddr.data.data)->s6_addr[2] = 0;
++	      ((struct in6_addr *)raddr.data.data)->s6_addr[3] = 0;
++	    }
++#endif
+ 	  raddr_valid = 1;
+ 	default:
+ 	  break;
+@@ -196,9 +216,12 @@ static void rtm_addr(struct rt_msghdr *r
+       if (!(addriface = avahi_interface_monitor_get_address(m, iface, &raddr)))
+ 	if (!(addriface = avahi_interface_address_new(m, iface, &raddr, prefixlen)))
+ 	  return; /* OOM */
+-      /*       FIXME */
+-      /*       addriface->global_scope = ifaddrmsg->ifa_scope == RT_SCOPE_UNIVERSE || ifaddrmsg->ifa_scope == RT_SCOPE_SITE; */
+-      addriface->global_scope = 1;
++      if (raddr.proto == AVAHI_PROTO_INET6)
++        {
++	  addriface->global_scope = !(IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)raddr.data.data) || IN6_IS_ADDR_MULTICAST((struct in6_addr *)raddr.data.data));
++	}
++      else
++        addriface->global_scope = 1;
+     }
+   else
+     {


More information about the Midnightbsd-cvs mailing list