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

Reply via email to