From: Roy Marples Date: Fri, 29 Dec 2006 10:16:13 +0000 (+0000) Subject: Add a patch to apply static routes before routers and setup host routes X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=2721aec4b77e98b7850c5a98cccc272fb0068495;p=gentoo.git Add a patch to apply static routes before routers and setup host routes correctly. Package-Manager: portage-2.1.2_rc4-r1 --- diff --git a/net-misc/dhcpcd/ChangeLog b/net-misc/dhcpcd/ChangeLog index ebc5cd000a40..9c26975b7f4a 100644 --- a/net-misc/dhcpcd/ChangeLog +++ b/net-misc/dhcpcd/ChangeLog @@ -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 + +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) diff --git a/net-misc/dhcpcd/Manifest b/net-misc/dhcpcd/Manifest index 7efa1eb31311..a178f8f4a51e 100644 --- a/net-misc/dhcpcd/Manifest +++ b/net-misc/dhcpcd/Manifest @@ -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 index 000000000000..449446c061c4 --- /dev/null +++ b/net-misc/dhcpcd/dhcpcd-3.0.8-r1.ebuild @@ -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 index 000000000000..bbc987224cb4 --- /dev/null +++ b/net-misc/dhcpcd/files/dhcpcd-3.0.8-static-routes.patch @@ -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 index 000000000000..49701a90cb02 --- /dev/null +++ b/net-misc/dhcpcd/files/digest-dhcpcd-3.0.8-r1 @@ -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