Skip to content

Commit 42033d0

Browse files
q2venkuba-moo
authored andcommitted
arp: Move ATF_COM setting in arp_req_set().
In arp_req_set(), if ATF_PERM is set in arpreq.arp_flags, ATF_COM is set automatically. The flag will be used later for neigh_update() only when a neighbour entry is found. Let's set ATF_COM just before calling neigh_update(). Signed-off-by: Kuniyuki Iwashima <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 496bc58 commit 42033d0

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

net/ipv4/arp.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,8 +1054,7 @@ static int arp_req_set(struct net *net, struct arpreq *r,
10541054
return arp_req_set_public(net, r, dev);
10551055

10561056
ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr;
1057-
if (r->arp_flags & ATF_PERM)
1058-
r->arp_flags |= ATF_COM;
1057+
10591058
if (!dev) {
10601059
struct rtable *rt = ip_route_output(net, ip, 0, 0, 0,
10611060
RT_SCOPE_LINK);
@@ -1092,8 +1091,12 @@ static int arp_req_set(struct net *net, struct arpreq *r,
10921091
err = PTR_ERR(neigh);
10931092
if (!IS_ERR(neigh)) {
10941093
unsigned int state = NUD_STALE;
1095-
if (r->arp_flags & ATF_PERM)
1094+
1095+
if (r->arp_flags & ATF_PERM) {
1096+
r->arp_flags |= ATF_COM;
10961097
state = NUD_PERMANENT;
1098+
}
1099+
10971100
err = neigh_update(neigh, (r->arp_flags & ATF_COM) ?
10981101
r->arp_ha.sa_data : NULL, state,
10991102
NEIGH_UPDATE_F_OVERRIDE |

0 commit comments

Comments
 (0)