lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 07 Jan 2011 13:57:42 +0100 From: Eric Dumazet <eric.dumazet@...il.com> To: Maxim Levitsky <maximlevitsky@...il.com> Cc: linux1394-devel <linux1394-devel@...ts.sourceforge.net>, Stefan Richter <stefanr@...6.in-berlin.de>, netdev@...r.kernel.org, "David S. Miller" <davem@...emloft.net>, Alexey Kuznetsov <kuznet@....inr.ac.ru>, James Morris <jmorris@...ei.org>, Patrick McHardy <kaber@...sh.net> Subject: Re: [PATCH 3/5] NET: IPV4: ARP: allow to invalidate specific ARP entries Le vendredi 07 janvier 2011 à 14:47 +0200, Maxim Levitsky a écrit : > On Mon, 2010-11-29 at 04:09 +0200, Maxim Levitsky wrote: > > IPv4 over firewire needs to be able to remove ARP entries > > from the ARP cache that belong to nodes that are removed, because > > IPv4 over firewire uses ARP packets for private information > > about nodes. > > > > This information becomes invalid as soon as node drops > > off the bus and when it reconnects, its only possible > > to start takling to is after it responded to an ARP packet. > > But ARP cache prevents such packets from being sent. > > > > CC: netdev@...r.kernel.org > > CC: "David S. Miller" <davem@...emloft.net> > > CC: Alexey Kuznetsov <kuznet@....inr.ac.ru> > > CC: James Morris <jmorris@...ei.org> > > CC: Patrick McHardy <kaber@...sh.net> > > Anybody? > > Best regards, > Maxim Levitsky > > > > > > > Signed-off-by: Maxim Levitsky <maximlevitsky@...il.com> > > --- > > include/net/arp.h | 1 + > > net/ipv4/arp.c | 29 ++++++++++++++++++----------- > > 2 files changed, 19 insertions(+), 11 deletions(-) > > > > diff --git a/include/net/arp.h b/include/net/arp.h > > index f4cf6ce..91f0568 100644 > > --- a/include/net/arp.h > > +++ b/include/net/arp.h > > @@ -25,5 +25,6 @@ extern struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip, > > const unsigned char *src_hw, > > const unsigned char *target_hw); > > extern void arp_xmit(struct sk_buff *skb); > > +int arp_invalidate(struct net_device *dev, __be32 ip); > > > > #endif /* _ARP_H */ > > diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c > > index d8e540c..35b1272 100644 > > --- a/net/ipv4/arp.c > > +++ b/net/ipv4/arp.c > > @@ -1142,6 +1142,23 @@ static int arp_req_get(struct arpreq *r, struct net_device *dev) > > return err; > > } > > > > +int arp_invalidate(struct net_device *dev, __be32 ip) > > +{ > > + int err = -ENXIO; > > + struct neighbour *neigh = neigh_lookup(&arp_tbl, &ip, dev); > > + > > + if (neigh) { > > + if (neigh->nud_state & ~NUD_NOARP) > > + err = neigh_update(neigh, NULL, NUD_FAILED, > > + NEIGH_UPDATE_F_OVERRIDE| > > + NEIGH_UPDATE_F_ADMIN); > > + neigh_release(neigh); > > + } > > + > > + return err; > > +} > > +EXPORT_SYMBOL(arp_invalidate); > > + > > static int arp_req_delete_public(struct net *net, struct arpreq *r, > > struct net_device *dev) > > { > > @@ -1162,7 +1179,6 @@ static int arp_req_delete(struct net *net, struct arpreq *r, > > { > > int err; > > __be32 ip; > > - struct neighbour *neigh; > > > > if (r->arp_flags & ATF_PUBL) > > return arp_req_delete_public(net, r, dev); > > @@ -1180,16 +1196,7 @@ static int arp_req_delete(struct net *net, struct arpreq *r, > > if (!dev) > > return -EINVAL; > > } > > - err = -ENXIO; > > - neigh = neigh_lookup(&arp_tbl, &ip, dev); > > - if (neigh) { > > - if (neigh->nud_state & ~NUD_NOARP) > > - err = neigh_update(neigh, NULL, NUD_FAILED, > > - NEIGH_UPDATE_F_OVERRIDE| > > - NEIGH_UPDATE_F_ADMIN); > > - neigh_release(neigh); > > - } > > - return err; > > + return arp_invalidate(dev, ip); > > } > > > > /* > Hi Maxim You were supposed to respin your patch after my commit : (941666c2e3e0f9f6a1 net: RCU conversion of dev_getbyhwaddr() and arp_ioctl()) Thanks -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists