diff options
| author | Guillaume Nault <g.nault@alphalink.fr> | 2018-12-19 19:13:08 +0100 |
|---|---|---|
| committer | Dmitry Kozlov <xeb@mail.ru> | 2018-12-20 06:21:28 +0300 |
| commit | 6f6f7f2efb9432efe7d3b4f749022da2cfc39fb3 (patch) | |
| tree | bb45d7278f274715e819eda54aaa03656fe1ebed /accel-pppd/libnetlink/iputils.c | |
| parent | 7951559fbc6d75e930ee50a0ed18da3912439e25 (diff) | |
| download | accel-ppp-6f6f7f2efb9432efe7d3b4f749022da2cfc39fb3.tar.gz accel-ppp-6f6f7f2efb9432efe7d3b4f749022da2cfc39fb3.zip | |
iputils: add 'src' and 'gw' parameters to iproute_del()
Rework iproute_del() to have the same parameters as iproute_add().
This will allow callers to specify more precisely the route they want
to delete.
Callers will later be converted to make use of these parameters to
ensure that the removed route precisely matches the one that was
originaly inserted.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Diffstat (limited to 'accel-pppd/libnetlink/iputils.c')
| -rw-r--r-- | accel-pppd/libnetlink/iputils.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/accel-pppd/libnetlink/iputils.c b/accel-pppd/libnetlink/iputils.c index 343088f..5f830f0 100644 --- a/accel-pppd/libnetlink/iputils.c +++ b/accel-pppd/libnetlink/iputils.c @@ -500,7 +500,7 @@ int __export iproute_add(int ifindex, in_addr_t src, in_addr_t dst, in_addr_t gw return r; } -int __export iproute_del(int ifindex, in_addr_t dst, int proto, int mask, uint32_t prio) +int __export iproute_del(int ifindex, in_addr_t src, in_addr_t dst, in_addr_t gw, int proto, int mask, uint32_t prio) { struct ipaddr_req { struct nlmsghdr n; @@ -525,12 +525,15 @@ int __export iproute_del(int ifindex, in_addr_t dst, int proto, int mask, uint32 req.i.rtm_type = RTN_UNICAST; req.i.rtm_dst_len = mask; - addattr32(&req.n, sizeof(req), RTA_DST, dst); - if (ifindex) addattr32(&req.n, sizeof(req), RTA_OIF, ifindex); + if (src) + addattr32(&req.n, sizeof(req), RTA_PREFSRC, src); + if (gw) + addattr32(&req.n, sizeof(req), RTA_GATEWAY, gw); if (prio) addattr32(&req.n, sizeof(req), RTA_PRIORITY, prio); + addattr32(&req.n, sizeof(req), RTA_DST, dst); if (rtnl_talk(rth, &req.n, 0, 0, NULL, NULL, NULL, 0) < 0) r = -1; |
