}
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 {
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);
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;
}
}
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;
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);
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;
}
#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
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)
#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;
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;
#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;
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;