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
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
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
--- /dev/null
+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;