ipv4: Create and use route lookup helpers.
The idea here is this minimizes the number of places one has to edit in order to make changes to how flows are defined and used. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -433,14 +433,12 @@ static int arp_ignore(struct in_device *in_dev, __be32 sip, __be32 tip)
|
||||
|
||||
static int arp_filter(__be32 sip, __be32 tip, struct net_device *dev)
|
||||
{
|
||||
struct flowi fl = { .fl4_dst = sip,
|
||||
.fl4_src = tip };
|
||||
struct rtable *rt;
|
||||
int flag = 0;
|
||||
/*unsigned long now; */
|
||||
struct net *net = dev_net(dev);
|
||||
|
||||
rt = ip_route_output_key(net, &fl);
|
||||
rt = ip_route_output(net, sip, tip, 0, 0);
|
||||
if (IS_ERR(rt))
|
||||
return 1;
|
||||
if (rt->dst.dev != dev) {
|
||||
@@ -1062,9 +1060,7 @@ static int arp_req_set(struct net *net, struct arpreq *r,
|
||||
if (r->arp_flags & ATF_PERM)
|
||||
r->arp_flags |= ATF_COM;
|
||||
if (dev == NULL) {
|
||||
struct flowi fl = { .fl4_dst = ip,
|
||||
.fl4_tos = RTO_ONLINK };
|
||||
struct rtable *rt = ip_route_output_key(net, &fl);
|
||||
struct rtable *rt = ip_route_output(net, ip, 0, RTO_ONLINK, 0);
|
||||
|
||||
if (IS_ERR(rt))
|
||||
return PTR_ERR(rt);
|
||||
@@ -1185,9 +1181,7 @@ static int arp_req_delete(struct net *net, struct arpreq *r,
|
||||
|
||||
ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr;
|
||||
if (dev == NULL) {
|
||||
struct flowi fl = { .fl4_dst = ip,
|
||||
.fl4_tos = RTO_ONLINK };
|
||||
struct rtable *rt = ip_route_output_key(net, &fl);
|
||||
struct rtable *rt = ip_route_output(net, ip, 0, RTO_ONLINK, 0);
|
||||
if (IS_ERR(rt))
|
||||
return PTR_ERR(rt);
|
||||
dev = rt->dst.dev;
|
||||
|
Reference in New Issue
Block a user