Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 78471
b: refs/heads/master
c: 32e569b
h: refs/heads/master
i:
  78469: be351a1
  78467: 8f54a34
  78463: 41cb137
v: v3
  • Loading branch information
Pavel Emelyanov authored and David S. Miller committed Jan 28, 2008
1 parent f2ffdcd commit 557fd15
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ea40b324d791d86a42b858d073007de4d133227e
refs/heads/master: 32e569b7277f13c4b27bb29c761189963e49ce7a
2 changes: 1 addition & 1 deletion trunk/include/net/arp.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ extern struct neigh_table arp_tbl;

extern void arp_init(void);
extern int arp_find(unsigned char *haddr, struct sk_buff *skb);
extern int arp_ioctl(unsigned int cmd, void __user *arg);
extern int arp_ioctl(struct net *net, unsigned int cmd, void __user *arg);
extern void arp_send(int type, int ptype, __be32 dest_ip,
struct net_device *dev, __be32 src_ip,
unsigned char *dest_hw, unsigned char *src_hw, unsigned char *th);
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/ipv4/af_inet.c
Original file line number Diff line number Diff line change
Expand Up @@ -798,7 +798,7 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
case SIOCDARP:
case SIOCGARP:
case SIOCSARP:
err = arp_ioctl(cmd, (void __user *)arg);
err = arp_ioctl(sk->sk_net, cmd, (void __user *)arg);
break;
case SIOCGIFADDR:
case SIOCSIFADDR:
Expand Down
28 changes: 16 additions & 12 deletions trunk/net/ipv4/arp.c
Original file line number Diff line number Diff line change
Expand Up @@ -952,7 +952,7 @@ static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
* Set (create) an ARP cache entry.
*/

static int arp_req_set_proxy(struct net_device *dev, int on)
static int arp_req_set_proxy(struct net *net, struct net_device *dev, int on)
{
if (dev == NULL) {
IPV4_DEVCONF_ALL(PROXY_ARP) = on;
Expand All @@ -965,7 +965,8 @@ static int arp_req_set_proxy(struct net_device *dev, int on)
return -ENXIO;
}

static int arp_req_set_public(struct arpreq *r, struct net_device *dev)
static int arp_req_set_public(struct net *net, struct arpreq *r,
struct net_device *dev)
{
__be32 ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr;
__be32 mask = ((struct sockaddr_in *)&r->arp_netmask)->sin_addr.s_addr;
Expand All @@ -984,17 +985,18 @@ static int arp_req_set_public(struct arpreq *r, struct net_device *dev)
return 0;
}

return arp_req_set_proxy(dev, 1);
return arp_req_set_proxy(net, dev, 1);
}

static int arp_req_set(struct arpreq *r, struct net_device * dev)
static int arp_req_set(struct net *net, struct arpreq *r,
struct net_device * dev)
{
__be32 ip;
struct neighbour *neigh;
int err;

if (r->arp_flags & ATF_PUBL)
return arp_req_set_public(r, dev);
return arp_req_set_public(net, r, dev);

ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr;
if (r->arp_flags & ATF_PERM)
Expand Down Expand Up @@ -1080,7 +1082,8 @@ static int arp_req_get(struct arpreq *r, struct net_device *dev)
return err;
}

static int arp_req_delete_public(struct arpreq *r, struct net_device *dev)
static int arp_req_delete_public(struct net *net, struct arpreq *r,
struct net_device *dev)
{
__be32 ip = ((struct sockaddr_in *) &r->arp_pa)->sin_addr.s_addr;
__be32 mask = ((struct sockaddr_in *)&r->arp_netmask)->sin_addr.s_addr;
Expand All @@ -1091,17 +1094,18 @@ static int arp_req_delete_public(struct arpreq *r, struct net_device *dev)
if (mask)
return -EINVAL;

return arp_req_set_proxy(dev, 0);
return arp_req_set_proxy(net, dev, 0);
}

static int arp_req_delete(struct arpreq *r, struct net_device * dev)
static int arp_req_delete(struct net *net, struct arpreq *r,
struct net_device * dev)
{
int err;
__be32 ip;
struct neighbour *neigh;

if (r->arp_flags & ATF_PUBL)
return arp_req_delete_public(r, dev);
return arp_req_delete_public(net, r, dev);

ip = ((struct sockaddr_in *)&r->arp_pa)->sin_addr.s_addr;
if (dev == NULL) {
Expand Down Expand Up @@ -1131,7 +1135,7 @@ static int arp_req_delete(struct arpreq *r, struct net_device * dev)
* Handle an ARP layer I/O control request.
*/

int arp_ioctl(unsigned int cmd, void __user *arg)
int arp_ioctl(struct net *net, unsigned int cmd, void __user *arg)
{
int err;
struct arpreq r;
Expand Down Expand Up @@ -1179,10 +1183,10 @@ int arp_ioctl(unsigned int cmd, void __user *arg)

switch (cmd) {
case SIOCDARP:
err = arp_req_delete(&r, dev);
err = arp_req_delete(net, &r, dev);
break;
case SIOCSARP:
err = arp_req_set(&r, dev);
err = arp_req_set(net, &r, dev);
break;
case SIOCGARP:
err = arp_req_get(&r, dev);
Expand Down

0 comments on commit 557fd15

Please sign in to comment.