Mercurial > hg > dhcpcd
changeset 2977:a7c2131d0b48 draft
Remove RTM_GET code as we now read all kernel routes before building our own.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Tue, 03 Mar 2015 17:38:35 +0000 |
| parents | fe20a975aa48 |
| children | 88b0e8255e5a |
| files | if-bsd.c if.h ipv4.c ipv6.c |
| diffstat | 4 files changed, 17 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/if-bsd.c Tue Mar 03 17:27:25 2015 +0000 +++ b/if-bsd.c Tue Mar 03 17:38:35 2015 +0000 @@ -538,7 +538,7 @@ } int -if_route(unsigned char cmd, const struct rt *rt, struct rt *srt) +if_route(unsigned char cmd, const struct rt *rt) { const struct dhcp_state *state; union sockunion { @@ -632,9 +632,8 @@ if (rtm.hdr.rtm_flags & RTF_STATIC) rtm.hdr.rtm_flags |= RTF_GATEWAY; } - if (((cmd == RTM_ADD || cmd == RTM_CHANGE) && - !(rtm.hdr.rtm_flags & RTF_GATEWAY)) || - cmd == RTM_GET) + if ((cmd == RTM_ADD || cmd == RTM_CHANGE) && + !(rtm.hdr.rtm_flags & RTF_GATEWAY)) rtm.hdr.rtm_addrs |= RTA_IFA | RTA_IFP; ADDADDR(&rt->dest); @@ -674,16 +673,6 @@ rtm.hdr.rtm_msglen = (unsigned short)(bp - (char *)&rtm); retval = write(s, &rtm, rtm.hdr.rtm_msglen) == -1 ? -1 : 0; - - if (cmd == RTM_GET && retval == 0) { - retval = read(s, &rtm, sizeof(rtm)); - if (retval < (int)sizeof(struct rt_msghdr) || - retval < rtm.hdr.rtm_msglen) - retval = -1; - else - retval = if_copyrt(rt->iface->ctx, srt, &rtm.hdr); - } - close(s); return retval; } @@ -905,7 +894,7 @@ } int -if_route6(unsigned char cmd, const struct rt6 *rt, struct rt6 *srt) +if_route6(unsigned char cmd, const struct rt6 *rt) { union sockunion { struct sockaddr sa; @@ -964,8 +953,7 @@ if (cmd == RTM_ADD) rtm.hdr.rtm_addrs |= RTA_GATEWAY; - if (cmd == RTM_GET || - (cmd == RTM_ADD && !(rtm.hdr.rtm_flags & RTF_REJECT))) + if (cmd == RTM_ADD && !(rtm.hdr.rtm_flags & RTF_REJECT)) rtm.hdr.rtm_addrs |= RTA_IFP | RTA_IFA; ADDADDR(&rt->dest); @@ -1010,16 +998,6 @@ rtm.hdr.rtm_msglen = (unsigned short)(bp - (char *)&rtm); retval = write(s, &rtm, rtm.hdr.rtm_msglen) == -1 ? -1 : 0; - - if (cmd == RTM_GET && retval == 0) { - retval = read(s, &rtm, sizeof(rtm)); - if (retval < (int)sizeof(struct rt_msghdr) || - retval < rtm.hdr.rtm_msglen) - retval = -1; - else - retval = if_copyrt6(rt->iface->ctx, srt, &rtm.hdr); - } - close(s); return retval; }
--- a/if.h Tue Mar 03 17:27:25 2015 +0000 +++ b/if.h Tue Mar 03 17:38:35 2015 +0000 @@ -124,7 +124,7 @@ #define if_deladdress(ifp, addr, net) \ if_address(ifp, addr, net, NULL, -1) -int if_route(unsigned char, const struct rt *rt, struct rt *); +int if_route(unsigned char, const struct rt *rt); int if_initrt(struct interface *); #endif @@ -145,7 +145,7 @@ int if_addrflags6(const struct in6_addr *, const struct interface *); int if_getlifetime6(struct ipv6_addr *); -int if_route6(unsigned char, const struct rt6 *rt, struct rt6 *); +int if_route6(unsigned char, const struct rt6 *rt); int if_initrt6(struct interface *); #else #define if_checkipv6(a, b, c) (-1)
--- a/ipv4.c Tue Mar 03 17:27:25 2015 +0000 +++ b/ipv4.c Tue Mar 03 17:38:35 2015 +0000 @@ -436,17 +436,17 @@ #ifdef HAVE_ROUTE_METRIC /* With route metrics, we can safely add the new route before * deleting the old route. */ - if ((retval = if_route(RTM_ADD, nrt, NULL)) == -1) + if ((retval = if_route(RTM_ADD, nrt)) == -1) syslog(LOG_ERR, "if_route (ADD): %m"); - if (ort && if_route(RTM_DELETE, ort, NULL) == -1 && errno != ESRCH) + if (ort && if_route(RTM_DELETE, ort) == -1 && errno != ESRCH) syslog(LOG_ERR, "if_route (DEL): %m"); return retval; #else /* No route metrics, we need to delete the old route before * adding the new one. */ - if (ort && if_route(RTM_DELETE, ort, NULL) == -1 && errno != ESRCH) + if (ort && if_route(RTM_DELETE, ort) == -1 && errno != ESRCH) syslog(LOG_ERR, "if_route (DEL): %m"); - if (if_route(RTM_ADD, nrt, NULL) == 0) + if (if_route(RTM_ADD, nrt) == 0) return 0; syslog(LOG_ERR, "if_route (ADD): %m"); return -1; @@ -459,7 +459,7 @@ int retval; desc_route("deleting", rt); - retval = if_route(RTM_DELETE, rt, NULL); + retval = if_route(RTM_DELETE, rt); if (retval != 0 && errno != ENOENT && errno != ESRCH) syslog(LOG_ERR,"%s: if_delroute: %m", rt->iface->name); return retval;
--- a/ipv6.c Tue Mar 03 17:27:25 2015 +0000 +++ b/ipv6.c Tue Mar 03 17:38:35 2015 +0000 @@ -1829,18 +1829,18 @@ #ifdef HAVE_ROUTE_METRIC /* With route metrics, we can safely add the new route before * deleting the old route. */ - if ((retval = if_route6(RTM_ADD, nrt, NULL)) == -1) + if ((retval = if_route6(RTM_ADD, nrt)) == -1) syslog(LOG_ERR, "if_route6 (ADD): %m"); - if (ort && if_route6(RTM_DELETE, ort, NULL) == -1 && + if (ort && if_route6(RTM_DELETE, ort) == -1 && errno != ESRCH) syslog(LOG_ERR, "if_route6 (DEL): %m"); return retval; #else /* No route metrics, we need to delete the old route before * adding the new one. */ - if (ort && if_route6(RTM_DELETE, ort, NULL) == -1 && errno != ESRCH) + if (ort && if_route6(RTM_DELETE, ort) == -1 && errno != ESRCH) syslog(LOG_ERR, "if_route6: %m"); - if (if_route6(RTM_ADD, nrt, NULL) == 0) + if (if_route6(RTM_ADD, nrt) == 0) return 0; syslog(LOG_ERR, "if_route6 (ADD): %m"); return -1; @@ -1853,7 +1853,7 @@ int retval; desc_route("deleting", rt); - retval = if_route6(RTM_DELETE, rt, NULL); + retval = if_route6(RTM_DELETE, rt); if (retval != 0 && errno != ENOENT && errno != ESRCH) syslog(LOG_ERR,"%s: if_delroute6: %m", rt->iface->name); return retval;
