Stephen Hemminger <[EMAIL PROTECTED]> : [...] > --- /dev/null > +++ bridge-2.6/net/bridge/br_netlink.c [...] > +static int br_fill_ifinfo(struct sk_buff *skb, const struct net_bridge_port > *port, > + u32 pid, u32 seq, int event, unsigned int flags) > +{ [...] > +nlmsg_failure: > +rtattr_failure: > + > + skb_trim(skb, b - skb->data); > + return -1;
return -EINVAL; (see below) > +} > + > + > +void br_ifinfo_notify(int event, struct net_bridge_port *port) > +{ > + struct sk_buff *skb; > + > + printk(KERN_DEBUG "bridge notify event=%d\n", event); > + skb = alloc_skb(NLMSG_SPACE(sizeof(struct ifinfomsg) + 128), > + GFP_ATOMIC); > + if (!skb) { > + netlink_set_err(rtnl, 0, RTNLGRP_BRIDGE_IFINFO, ENOBUFS); > + return; > + } > + if (br_fill_ifinfo(skb, port, current->pid, 0, event, 0) < 0) { > + kfree_skb(skb); > + netlink_set_err(rtnl, 0, RTNLGRP_BRIDGE_IFINFO, EINVAL); > + return; > + } > + NETLINK_CB(skb).dst_group = RTNLGRP_IPV6_IFINFO; > + netlink_broadcast(rtnl, skb, 0, RTNLGRP_BRIDGE_IFINFO, GFP_ATOMIC); > +} void br_ifinfo_notify(int event, struct net_bridge_port *port) { struct sk_buff *skb; int err = -ENOBUFS; printk(KERN_DEBUG "bridge notify event=%d\n", event); skb = alloc_skb(NLMSG_SPACE(sizeof(struct ifinfomsg) + 128), GFP_ATOMIC); if (!skb) goto err_out; err = br_fill_ifinfo(skb, port, current->pid, 0, event, 0); if (unlikely((err < 0)) goto err_kfree; NETLINK_CB(skb).dst_group = RTNLGRP_IPV6_IFINFO; netlink_broadcast(rtnl, skb, 0, RTNLGRP_BRIDGE_IFINFO, GFP_ATOMIC); return; err_kfree: kfree_skb(skb); err_out: netlink_set_err(rtnl, 0, RTNLGRP_BRIDGE_IFINFO, -err); } -- Ueimor - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html