Add a patch to apply static routes before routers and setup host routes
authorRoy Marples <uberlord@gentoo.org>
Fri, 29 Dec 2006 10:16:13 +0000 (10:16 +0000)
committerRoy Marples <uberlord@gentoo.org>
Fri, 29 Dec 2006 10:16:13 +0000 (10:16 +0000)
  correctly.
Package-Manager: portage-2.1.2_rc4-r1

net-misc/dhcpcd/ChangeLog
net-misc/dhcpcd/Manifest
net-misc/dhcpcd/dhcpcd-3.0.8-r1.ebuild [new file with mode: 0644]
net-misc/dhcpcd/files/dhcpcd-3.0.8-static-routes.patch [new file with mode: 0644]
net-misc/dhcpcd/files/digest-dhcpcd-3.0.8-r1 [new file with mode: 0644]

index ebc5cd000a4043b11b065096393779cf98fe7baa..9c26975b7f4ace939b72771d0c407d57206717cb 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for net-misc/dhcpcd
 # Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcpcd/ChangeLog,v 1.125 2006/12/21 21:21:40 uberlord Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcpcd/ChangeLog,v 1.126 2006/12/29 10:16:12 uberlord Exp $
+
+*dhcpcd-3.0.8-r1 (29 Dec 2006)
+
+  29 Dec 2006; Roy Marples <uberlord@gentoo.org>
+  +files/dhcpcd-3.0.8-static-routes.patch, +dhcpcd-3.0.8-r1.ebuild:
+  Add a patch to apply static routes before routers and setup host routes
+  correctly.
 
 *dhcpcd-3.0.8 (21 Dec 2006)
 
index 7efa1eb313112dc9a0f9d21f1ca4530cba823cc6..a178f8f4a51e1863234f02c76026e8ee7f34dcf9 100644 (file)
@@ -2,7 +2,11 @@ AUX dhcpcd-2.0.0-alwaysup.patch 269 RMD160 32639a49176d07495704da4c9cae6237fe123
 MD5 5fa92b345c6326fcec19f2476422070b files/dhcpcd-2.0.0-alwaysup.patch 269
 RMD160 32639a49176d07495704da4c9cae6237fe12333a files/dhcpcd-2.0.0-alwaysup.patch 269
 SHA256 6c8bb55db74b400cd98d406c6f96e18956f33efb2e814f12d974a43799f0f902 files/dhcpcd-2.0.0-alwaysup.patch 269
-DIST dhcpcd-2.0.5.tar.bz2 124838 RMD160 205632ea754c51d39827cfbdb9839368a4f17a78 SHA256 0b3acf8306f5ad1fb036703c9ede302c416d9f118950903306c647357113a411
+AUX dhcpcd-3.0.8-static-routes.patch 5441 RMD160 ed6fb34dd8abb95d6536f1fb1bbc39a604ca1f26 SHA1 56df68f104782a2e20da91ce1ee1ace4c338f233 SHA256 0e50343a2533ad6178838eddc2ce583a133c7b043fd012bacfe506a2b887cde1
+MD5 91f5126cc33d18f343c4fd85a009c838 files/dhcpcd-3.0.8-static-routes.patch 5441
+RMD160 ed6fb34dd8abb95d6536f1fb1bbc39a604ca1f26 files/dhcpcd-3.0.8-static-routes.patch 5441
+SHA256 0e50343a2533ad6178838eddc2ce583a133c7b043fd012bacfe506a2b887cde1 files/dhcpcd-3.0.8-static-routes.patch 5441
+DIST dhcpcd-2.0.5.tar.bz2 124838 RMD160 205632ea754c51d39827cfbdb9839368a4f17a78 SHA1 f2480d142dfce4128b13d434497ad933f4c337d1 SHA256 0b3acf8306f5ad1fb036703c9ede302c416d9f118950903306c647357113a411
 DIST dhcpcd-3.0.6.tar.bz2 28246 RMD160 d7287e29a59c9e2fe37ebd98e2c250fa5ebd3cf6 SHA1 27d4089a08e3373255f5936c968194cb68e5cba5 SHA256 4b935a13347e9271f60dbf2f290d9f648f0455bea4bf0c0bd57f58bc227ea81d
 DIST dhcpcd-3.0.8.tar.bz2 29305 RMD160 f19545ebd98aabd60512f3c482d9a30ce0f554ab SHA1 d2d3613159bc9e36f3ef39b8244280030369fff0 SHA256 c878e32bb149c17a455ba13f370ea2bc2c69e0da3a41ed5ad58b2d0ca51ec09a
 EBUILD dhcpcd-2.0.5-r1.ebuild 1434 RMD160 ffca09a219770fcb582a751c490b8d1bcc1e3088 SHA1 55369d38f91511db3b652a6019f070506541bf27 SHA256 f821d6557b76a3f493032c4d8e0ca1b789a1d65f7e23fc5873c8c0476d62bcb1
@@ -13,14 +17,18 @@ EBUILD dhcpcd-3.0.6.ebuild 900 RMD160 595dce91edb5075c465b52cc43721684e551cc0d S
 MD5 b84f288b02709c1c60ec8b6f5579ac5b dhcpcd-3.0.6.ebuild 900
 RMD160 595dce91edb5075c465b52cc43721684e551cc0d dhcpcd-3.0.6.ebuild 900
 SHA256 de07c316f2b1eff459341e8cd79461b6913a76c9948315fc539d0948acd69337 dhcpcd-3.0.6.ebuild 900
+EBUILD dhcpcd-3.0.8-r1.ebuild 947 RMD160 036fa3e5ff936bbbb32b834b8efe578c28746071 SHA1 d7b0f0ec41d3c464f5b89e5fefe044bc0ddc1567 SHA256 d41ca97dbb88959f91926d47c05bd77d81806125095750d04d6d255a0e4c4ac7
+MD5 bc6db3dc8e11a950aceb774de052dfe3 dhcpcd-3.0.8-r1.ebuild 947
+RMD160 036fa3e5ff936bbbb32b834b8efe578c28746071 dhcpcd-3.0.8-r1.ebuild 947
+SHA256 d41ca97dbb88959f91926d47c05bd77d81806125095750d04d6d255a0e4c4ac7 dhcpcd-3.0.8-r1.ebuild 947
 EBUILD dhcpcd-3.0.8.ebuild 896 RMD160 779193a90d3238bc4327d387296272af99497fbf SHA1 d1ea1b37186d466097a014c11ef5917ab450eb1b SHA256 43eb453540f9036b4aa70a3759fe12f3260ce128e5574c6cbb4890d984146a1e
 MD5 5445175c2336301acd1df3ffbf7cd1c7 dhcpcd-3.0.8.ebuild 896
 RMD160 779193a90d3238bc4327d387296272af99497fbf dhcpcd-3.0.8.ebuild 896
 SHA256 43eb453540f9036b4aa70a3759fe12f3260ce128e5574c6cbb4890d984146a1e dhcpcd-3.0.8.ebuild 896
-MISC ChangeLog 18704 RMD160 217ae212d6493dad01bce28c6626c779b5c9f54b SHA1 dbd68a4c7d415cbf8d76dafc0bce6fda3ac22b6c SHA256 42889cbcf492932a1f753e48b66d53a50957984e6d10b702e14d55c60270c195
-MD5 abccfead1049315946dc09e241879e57 ChangeLog 18704
-RMD160 217ae212d6493dad01bce28c6626c779b5c9f54b ChangeLog 18704
-SHA256 42889cbcf492932a1f753e48b66d53a50957984e6d10b702e14d55c60270c195 ChangeLog 18704
+MISC ChangeLog 18941 RMD160 d553fcdc898936cb7953e548f20c5b37d0247dae SHA1 319fc71d7c1bd38e983c073da848b141ccb67730 SHA256 2a355a2060361e9ed4af56e8002b7f22a5a135fcb9404ef0eb36d7b88a726828
+MD5 5bc2fd508fae074641f3f7ed329afc97 ChangeLog 18941
+RMD160 d553fcdc898936cb7953e548f20c5b37d0247dae ChangeLog 18941
+SHA256 2a355a2060361e9ed4af56e8002b7f22a5a135fcb9404ef0eb36d7b88a726828 ChangeLog 18941
 MISC metadata.xml 387 RMD160 c53e701a27189b08ae150e174d24e94813f22d9b SHA1 0c5e906b77e4bdcb49309098599d1af03fd984b2 SHA256 1a92884e5ea54c2b54b068a428431fb720e9456a62b0a2506700c80c43e94c18
 MD5 d162dd0282805d591f68cfc5d4e36901 metadata.xml 387
 RMD160 c53e701a27189b08ae150e174d24e94813f22d9b metadata.xml 387
@@ -34,3 +42,6 @@ SHA256 cedfdc0331b7741691290793f95dce40a479fe2e5c866d249699d58788a96f20 files/di
 MD5 78dd7672e06f61034b9a768fc8bbedf5 files/digest-dhcpcd-3.0.8 238
 RMD160 28b0a2850cec3240a478b4796a115e6755ecc739 files/digest-dhcpcd-3.0.8 238
 SHA256 638911f2fa29097c207720e132e773b55b66a838f79a90131dad2bf923a9c824 files/digest-dhcpcd-3.0.8 238
+MD5 78dd7672e06f61034b9a768fc8bbedf5 files/digest-dhcpcd-3.0.8-r1 238
+RMD160 28b0a2850cec3240a478b4796a115e6755ecc739 files/digest-dhcpcd-3.0.8-r1 238
+SHA256 638911f2fa29097c207720e132e773b55b66a838f79a90131dad2bf923a9c824 files/digest-dhcpcd-3.0.8-r1 238
diff --git a/net-misc/dhcpcd/dhcpcd-3.0.8-r1.ebuild b/net-misc/dhcpcd/dhcpcd-3.0.8-r1.ebuild
new file mode 100644 (file)
index 0000000..449446c
--- /dev/null
@@ -0,0 +1,37 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcpcd/dhcpcd-3.0.8-r1.ebuild,v 1.1 2006/12/29 10:16:12 uberlord Exp $
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="A DHCP client"
+HOMEPAGE="http://dhcpcd.berlios.de"
+SRC_URI="http://download.berlios.de/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+IUSE=""
+
+DEPEND=""
+PROVIDE="virtual/dhcpc"
+
+src_unpack() {
+       unpack ${A}
+       cd "${S}"
+
+       epatch "${FILESDIR}/${P}-static-routes.patch"
+
+       # Redefine the location of ntp.drift
+       sed -i -e 's,#define NTPDRIFTFILE\t.*,#define NTPDRIFTFILE\t\t\"/var/lib/ntp/ntp.drift\",' \
+               pathnames.h || die "sed failed"
+}
+
+src_compile() {
+       emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" || die
+}
+
+src_install() {
+       emake DESTDIR="${D}" install || die
+       dodoc ChangeLog
+}
diff --git a/net-misc/dhcpcd/files/dhcpcd-3.0.8-static-routes.patch b/net-misc/dhcpcd/files/dhcpcd-3.0.8-static-routes.patch
new file mode 100644 (file)
index 0000000..bbc9872
--- /dev/null
@@ -0,0 +1,177 @@
+Index: interface.c
+===================================================================
+@@ -278,13 +278,19 @@
+                    int change, int del)
+ {
+   int s;
+-  char *destd;
++  char *dstd;
+   char *gend;
+   struct rtm
+     {
+       struct rt_msghdr hdr;
+       struct sockaddr_in destination;
+-      struct sockaddr_in gateway;
++      union
++      {
++        struct sockaddr sa;
++        struct sockaddr_in sin;
++        struct sockaddr_dl sdl;
++        struct sockaddr_storage sss; /* added to avoid memory overrun */
++      } gateway;
+       struct sockaddr_in netmask;
+     } rtm;
+   static int seq;
+@@ -295,13 +301,22 @@
+   /* Do something with metric to satisfy compiler warnings */
+   metric = 0;
+-  destd = strdup (inet_ntoa (destination));
++  dstd = strdup (inet_ntoa (destination));
+   gend = strdup (inet_ntoa (netmask));
+-  logger (LOG_INFO, "%s route to %s (%s) via %s",
+-        change ? "changing" : del ? "removing" : "adding",
+-        destd, gend, inet_ntoa(gateway));
+-  if (destd)
+-    free (destd);
++  if (gateway.s_addr == destination.s_addr)
++    logger (LOG_INFO, "%s route to %s (%s)",
++          change ? "changing" : del ? "removing" : "adding",
++          dstd, gend);
++  else if (destination.s_addr == INADDR_ANY && netmask.s_addr == INADDR_ANY)
++    logger (LOG_INFO, "%s default route via %s",
++          change ? "changing" : del ? "removing" : "adding",
++          inet_ntoa (gateway));
++  else
++    logger (LOG_INFO, "%s route to %s (%s) via %s",
++          change ? "changing" : del ? "removing" : "adding",
++          dstd, gend, inet_ntoa (gateway));
++  if (dstd)
++    free (dstd);
+   if (gend)
+     free (gend);
+@@ -317,9 +332,11 @@
+   rtm.hdr.rtm_seq = ++seq;
+   rtm.hdr.rtm_type = change ? RTM_CHANGE : del ? RTM_DELETE : RTM_ADD;
+-  rtm.hdr.rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC;
+-  if (netmask.s_addr == 0xffffffff)
++  rtm.hdr.rtm_flags = RTF_UP | RTF_STATIC;
++  if (netmask.s_addr == INADDR_BROADCAST) 
+     rtm.hdr.rtm_flags |= RTF_HOST;
++  else
++    rtm.hdr.rtm_flags |= RTF_GATEWAY;
+   rtm.hdr.rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
+@@ -329,7 +346,40 @@
+   memcpy (&_var.sin_addr, &_addr, sizeof (struct in_addr));
+   ADDADDR (rtm.destination, destination);
+-  ADDADDR (rtm.gateway, gateway);
++  if (netmask.s_addr == INADDR_BROADCAST)
++    {
++      struct ifaddrs *ifap, *ifa;
++      union
++      {
++        struct sockaddr *sa;
++        struct sockaddr_dl *sdl;
++      } us;
++
++      if (getifaddrs (&ifap))
++      {
++        logger (LOG_ERR, "getifaddrs: %s", strerror (errno));
++        return -1;
++      }
++
++      for (ifa = ifap; ifa; ifa = ifa->ifa_next)
++      {
++        if (ifa->ifa_addr->sa_family != AF_LINK)
++          continue;
++
++        if (strcmp (ifname, ifa->ifa_name))
++          continue;
++
++        us.sa = ifa->ifa_addr;
++        memcpy (&rtm.gateway.sdl, us.sdl, us.sdl->sdl_len);
++        break;
++      }
++      freeifaddrs (ifap);
++    }
++  else
++    {
++      ADDADDR (rtm.gateway.sin, gateway);
++    }
++
+   ADDADDR (rtm.netmask, netmask);
+ #undef ADDADDR
+@@ -610,9 +660,18 @@
+   dstd = strdup (inet_ntoa (destination));
+   gend = strdup (inet_ntoa (netmask));
+-  logger (LOG_INFO, "%s route to %s (%s) via %s, metric %d",
+-        change ? "changing" : del ? "removing" : "adding",
+-        dstd, gend, inet_ntoa (gateway), metric);
++  if (gateway.s_addr == destination.s_addr)
++    logger (LOG_INFO, "%s route to %s (%s) metric %d",
++          change ? "changing" : del ? "removing" : "adding",
++          dstd, gend, metric);
++  else if (destination.s_addr == INADDR_ANY && netmask.s_addr == INADDR_ANY)
++    logger (LOG_INFO, "%s default route via %s metric %d",
++          change ? "changing" : del ? "removing" : "adding",
++          inet_ntoa (gateway), metric);
++  else
++    logger (LOG_INFO, "%s route to %s (%s) via %s metric %d",
++          change ? "changing" : del ? "removing" : "adding",
++          dstd, gend, inet_ntoa (gateway), metric);
+   if (dstd)
+     free (dstd);
+   if (gend)
+@@ -636,7 +695,8 @@
+     {
+       nlm.hdr.nlmsg_flags |= NLM_F_CREATE | NLM_F_EXCL;
+       nlm.rt.rtm_protocol = RTPROT_BOOT;
+-      if (gateway.s_addr == 0)
++      if (gateway.s_addr == INADDR_ANY ||
++        netmask.s_addr == INADDR_BROADCAST)
+       nlm.rt.rtm_scope = RT_SCOPE_LINK;
+       else
+       nlm.rt.rtm_scope = RT_SCOPE_UNIVERSE;
+@@ -652,7 +712,7 @@
+   add_attr_l (&nlm.hdr, sizeof (nlm), RTA_DST, &destination.s_addr,
+             sizeof (destination.s_addr));
+-  if (gateway.s_addr != 0)
++  if (gateway.s_addr != INADDR_ANY && gateway.s_addr != destination.s_addr)
+     add_attr_l (&nlm.hdr, sizeof (nlm), RTA_GATEWAY, &gateway.s_addr,
+               sizeof (gateway.s_addr));
+Index: dhcp.c
+===================================================================
+--- dhcp.c     (revision 134)
++++ dhcp.c     (working copy)
+@@ -165,8 +165,8 @@
+         *p++ = DHCP_CSR;
+         /* RFC 3442 states classless static routes should be before routers
+          * and static routes as classless static routes override them both */
++        *p++ = DHCP_STATICROUTE;
+         *p++ = DHCP_ROUTERS;
+-        *p++ = DHCP_STATICROUTE;
+         *p++ = DHCP_HOSTNAME;
+         *p++ = DHCP_DNSSEARCH;
+         *p++ = DHCP_DNSDOMAIN;
+Index: configure.c
+===================================================================
+--- configure.c        (revision 134)
++++ configure.c        (working copy)
+@@ -426,7 +426,7 @@
+ #ifdef __linux__
+   /* On linux, we need to change the subnet route to have our metric. */
+   if (iface->previous_address.s_addr != dhcp->address.s_addr
+-      && options->metric > 0)
++      && options->metric > 0 && dhcp->netmask.s_addr != INADDR_BROADCAST)
+     {
+       struct in_addr td;
+       struct in_addr tg;
diff --git a/net-misc/dhcpcd/files/digest-dhcpcd-3.0.8-r1 b/net-misc/dhcpcd/files/digest-dhcpcd-3.0.8-r1
new file mode 100644 (file)
index 0000000..49701a9
--- /dev/null
@@ -0,0 +1,3 @@
+MD5 7c41756a7cfef60bdd8ef2f12216f367 dhcpcd-3.0.8.tar.bz2 29305
+RMD160 f19545ebd98aabd60512f3c482d9a30ce0f554ab dhcpcd-3.0.8.tar.bz2 29305
+SHA256 c878e32bb149c17a455ba13f370ea2bc2c69e0da3a41ed5ad58b2d0ca51ec09a dhcpcd-3.0.8.tar.bz2 29305