• Home
  • Raw
  • Download

Lines Matching refs:nlh

767 		 const struct nlmsghdr *nlh, gfp_t flags)  in rtnl_notify()  argument
771 nlmsg_notify(rtnl, skb, pid, group, nlmsg_report(nlh), flags); in rtnl_notify()
1785 struct nlmsghdr *nlh; in rtnl_fill_ifinfo() local
1789 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifm), flags); in rtnl_fill_ifinfo()
1790 if (nlh == NULL) in rtnl_fill_ifinfo()
1793 ifm = nlmsg_data(nlh); in rtnl_fill_ifinfo()
1919 nlmsg_end(skb, nlh); in rtnl_fill_ifinfo()
1925 nlmsg_cancel(skb, nlh); in rtnl_fill_ifinfo()
2124 static int rtnl_valid_dump_ifinfo_req(const struct nlmsghdr *nlh, in rtnl_valid_dump_ifinfo_req() argument
2133 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in rtnl_valid_dump_ifinfo_req()
2138 ifm = nlmsg_data(nlh); in rtnl_valid_dump_ifinfo_req()
2149 return nlmsg_parse_deprecated_strict(nlh, sizeof(*ifm), tb, in rtnl_valid_dump_ifinfo_req()
2161 hdrlen = nlmsg_len(nlh) < sizeof(struct ifinfomsg) ? in rtnl_valid_dump_ifinfo_req()
2164 return nlmsg_parse_deprecated(nlh, hdrlen, tb, IFLA_MAX, ifla_policy, in rtnl_valid_dump_ifinfo_req()
2171 const struct nlmsghdr *nlh = cb->nlh; in rtnl_dump_ifinfo() local
2189 err = rtnl_valid_dump_ifinfo_req(nlh, cb->strict_check, tb, extack); in rtnl_dump_ifinfo()
2243 nlh->nlmsg_seq, 0, flags, in rtnl_dump_ifinfo()
3140 static int rtnl_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_setlink() argument
3149 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_setlink()
3159 ifm = nlmsg_data(nlh); in rtnl_setlink()
3217 int rtnl_delete_link(struct net_device *dev, u32 portid, const struct nlmsghdr *nlh) in rtnl_delete_link() argument
3227 unregister_netdevice_many_notify(&list_kill, portid, nlh); in rtnl_delete_link()
3233 static int rtnl_dellink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_dellink() argument
3245 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_dellink()
3262 ifm = nlmsg_data(nlh); in rtnl_dellink()
3279 err = rtnl_delete_link(dev, portid, nlh); in rtnl_dellink()
3289 u32 portid, const struct nlmsghdr *nlh) in rtnl_configure_link() argument
3303 __dev_notify_flags(dev, old_flags, (old_flags ^ dev->flags), portid, nlh); in rtnl_configure_link()
3306 __dev_notify_flags(dev, old_flags, ~0U, portid, nlh); in rtnl_configure_link()
3433 const struct nlmsghdr *nlh, in rtnl_newlink_create() argument
3493 err = rtnl_configure_link(dev, ifm, portid, nlh); in rtnl_newlink_create()
3529 static int __rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh, in __rtnl_newlink() argument
3550 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in __rtnl_newlink()
3559 ifm = nlmsg_data(nlh); in __rtnl_newlink()
3640 if (nlh->nlmsg_flags & NLM_F_EXCL) in __rtnl_newlink()
3642 if (nlh->nlmsg_flags & NLM_F_REPLACE) in __rtnl_newlink()
3674 if (!(nlh->nlmsg_flags & NLM_F_CREATE)) { in __rtnl_newlink()
3705 return rtnl_newlink_create(skb, ifm, ops, nlh, tb, data, extack); in __rtnl_newlink()
3708 static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_newlink() argument
3718 ret = __rtnl_newlink(skb, nlh, tbs, extack); in rtnl_newlink()
3724 const struct nlmsghdr *nlh, in rtnl_valid_getlink_req() argument
3731 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in rtnl_valid_getlink_req()
3737 return nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_valid_getlink_req()
3740 ifm = nlmsg_data(nlh); in rtnl_valid_getlink_req()
3747 err = nlmsg_parse_deprecated_strict(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_valid_getlink_req()
3771 static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_getlink() argument
3784 err = rtnl_valid_getlink_req(skb, nlh, tb, extack); in rtnl_getlink()
3803 ifm = nlmsg_data(nlh); in rtnl_getlink()
3822 nlh->nlmsg_seq, 0, 0, ext_filter_mask, in rtnl_getlink()
3879 static int rtnl_linkprop(int cmd, struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_linkprop() argument
3890 err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy, extack); in rtnl_linkprop()
3898 ifm = nlmsg_data(nlh); in rtnl_linkprop()
3927 static int rtnl_newlinkprop(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_newlinkprop() argument
3930 return rtnl_linkprop(RTM_NEWLINKPROP, skb, nlh, extack); in rtnl_newlinkprop()
3933 static int rtnl_dellinkprop(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_dellinkprop() argument
3936 return rtnl_linkprop(RTM_DELLINKPROP, skb, nlh, extack); in rtnl_dellinkprop()
3939 static u32 rtnl_calcit(struct sk_buff *skb, struct nlmsghdr *nlh) in rtnl_calcit() argument
3949 hdrlen = nlmsg_len(nlh) < sizeof(struct ifinfomsg) ? in rtnl_calcit()
3952 if (nlmsg_parse_deprecated(nlh, hdrlen, tb, IFLA_MAX, ifla_policy, NULL) >= 0) { in rtnl_calcit()
3977 int type = cb->nlh->nlmsg_type - RTM_BASE; in rtnl_dump_all()
4024 const struct nlmsghdr *nlh) in rtmsg_ifinfo_build_skb() argument
4035 if (nlmsg_report(nlh)) in rtmsg_ifinfo_build_skb()
4036 seq = nlmsg_seq(nlh); in rtmsg_ifinfo_build_skb()
4057 u32 portid, const struct nlmsghdr *nlh) in rtmsg_ifinfo_send() argument
4061 rtnl_notify(skb, net, portid, RTNLGRP_LINK, nlh, flags); in rtmsg_ifinfo_send()
4067 u32 portid, const struct nlmsghdr *nlh) in rtmsg_ifinfo_event() argument
4075 new_ifindex, portid, nlh); in rtmsg_ifinfo_event()
4077 rtmsg_ifinfo_send(skb, dev, flags, portid, nlh); in rtmsg_ifinfo_event()
4081 gfp_t flags, u32 portid, const struct nlmsghdr *nlh) in rtmsg_ifinfo() argument
4084 NULL, 0, portid, nlh); in rtmsg_ifinfo()
4100 struct nlmsghdr *nlh; in nlmsg_populate_fdb_fill() local
4103 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ndm), nlflags); in nlmsg_populate_fdb_fill()
4104 if (!nlh) in nlmsg_populate_fdb_fill()
4107 ndm = nlmsg_data(nlh); in nlmsg_populate_fdb_fill()
4122 nlmsg_end(skb, nlh); in nlmsg_populate_fdb_fill()
4126 nlmsg_cancel(skb, nlh); in nlmsg_populate_fdb_fill()
4226 static int rtnl_fdb_add(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_fdb_add() argument
4237 err = nlmsg_parse_deprecated(nlh, sizeof(*ndm), tb, NDA_MAX, NULL, in rtnl_fdb_add()
4242 ndm = nlmsg_data(nlh); in rtnl_fdb_add()
4279 nlh->nlmsg_flags, extack); in rtnl_fdb_add()
4291 nlh->nlmsg_flags, in rtnl_fdb_add()
4295 nlh->nlmsg_flags); in rtnl_fdb_add()
4341 static int rtnl_fdb_del(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_fdb_del() argument
4344 bool del_bulk = !!(nlh->nlmsg_flags & NLM_F_BULK); in rtnl_fdb_del()
4358 err = nlmsg_parse_deprecated(nlh, sizeof(*ndm), tb, NDA_MAX, in rtnl_fdb_del()
4361 err = nlmsg_parse(nlh, sizeof(*ndm), tb, NDA_MAX, in rtnl_fdb_del()
4367 ndm = nlmsg_data(nlh); in rtnl_fdb_del()
4457 seq = cb->nlh->nlmsg_seq; in nlmsg_populate_fdb()
4508 static int valid_fdb_dump_strict(const struct nlmsghdr *nlh, in valid_fdb_dump_strict() argument
4516 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ndm))) { in valid_fdb_dump_strict()
4521 ndm = nlmsg_data(nlh); in valid_fdb_dump_strict()
4528 err = nlmsg_parse_deprecated_strict(nlh, sizeof(struct ndmsg), tb, in valid_fdb_dump_strict()
4562 static int valid_fdb_dump_legacy(const struct nlmsghdr *nlh, in valid_fdb_dump_legacy() argument
4576 if (nlmsg_len(nlh) != sizeof(struct ndmsg) && in valid_fdb_dump_legacy()
4577 (nlmsg_len(nlh) != sizeof(struct ndmsg) + in valid_fdb_dump_legacy()
4581 err = nlmsg_parse_deprecated(nlh, sizeof(struct ifinfomsg), in valid_fdb_dump_legacy()
4591 ifm = nlmsg_data(nlh); in valid_fdb_dump_legacy()
4613 err = valid_fdb_dump_strict(cb->nlh, &br_idx, &brport_idx, in rtnl_fdb_dump()
4616 err = valid_fdb_dump_legacy(cb->nlh, &br_idx, &brport_idx, in rtnl_fdb_dump()
4697 static int valid_fdb_get_strict(const struct nlmsghdr *nlh, in valid_fdb_get_strict() argument
4705 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ndm))) { in valid_fdb_get_strict()
4710 ndm = nlmsg_data(nlh); in valid_fdb_get_strict()
4722 err = nlmsg_parse_deprecated_strict(nlh, sizeof(struct ndmsg), tb, in valid_fdb_get_strict()
4760 static int rtnl_fdb_get(struct sk_buff *in_skb, struct nlmsghdr *nlh, in rtnl_fdb_get() argument
4775 err = valid_fdb_get_strict(nlh, tb, &ndm_flags, &br_idx, in rtnl_fdb_get()
4846 nlh->nlmsg_seq, extack); in rtnl_fdb_get()
4872 struct nlmsghdr *nlh; in ndo_dflt_bridge_getlink() local
4880 nlh = nlmsg_put(skb, pid, seq, RTM_NEWLINK, sizeof(*ifm), nlflags); in ndo_dflt_bridge_getlink()
4881 if (nlh == NULL) in ndo_dflt_bridge_getlink()
4884 ifm = nlmsg_data(nlh); in ndo_dflt_bridge_getlink()
4959 nlmsg_end(skb, nlh); in ndo_dflt_bridge_getlink()
4962 nlmsg_cancel(skb, nlh); in ndo_dflt_bridge_getlink()
4967 static int valid_bridge_getlink_req(const struct nlmsghdr *nlh, in valid_bridge_getlink_req() argument
4977 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in valid_bridge_getlink_req()
4982 ifm = nlmsg_data(nlh); in valid_bridge_getlink_req()
4989 err = nlmsg_parse_deprecated_strict(nlh, in valid_bridge_getlink_req()
4994 err = nlmsg_parse_deprecated(nlh, sizeof(struct ifinfomsg), in valid_bridge_getlink_req()
5023 const struct nlmsghdr *nlh = cb->nlh; in rtnl_bridge_getlink() local
5028 u32 seq = nlh->nlmsg_seq; in rtnl_bridge_getlink()
5032 err = valid_bridge_getlink_req(nlh, cb->strict_check, &filter_mask, in rtnl_bridge_getlink()
5132 static int rtnl_bridge_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_bridge_setlink() argument
5142 if (nlmsg_len(nlh) < sizeof(*ifm)) in rtnl_bridge_setlink()
5145 ifm = nlmsg_data(nlh); in rtnl_bridge_setlink()
5155 br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC); in rtnl_bridge_setlink()
5181 err = br_dev->netdev_ops->ndo_bridge_setlink(dev, nlh, flags, in rtnl_bridge_setlink()
5193 err = dev->netdev_ops->ndo_bridge_setlink(dev, nlh, in rtnl_bridge_setlink()
5212 static int rtnl_bridge_dellink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_bridge_dellink() argument
5223 if (nlmsg_len(nlh) < sizeof(*ifm)) in rtnl_bridge_dellink()
5226 ifm = nlmsg_data(nlh); in rtnl_bridge_dellink()
5236 br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC); in rtnl_bridge_dellink()
5258 err = br_dev->netdev_ops->ndo_bridge_dellink(dev, nlh, flags); in rtnl_bridge_dellink()
5269 err = dev->netdev_ops->ndo_bridge_dellink(dev, nlh, in rtnl_bridge_dellink()
5570 struct nlmsghdr *nlh; in rtnl_fill_statsinfo() local
5577 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifsm), flags); in rtnl_fill_statsinfo()
5578 if (!nlh) in rtnl_fill_statsinfo()
5581 ifsm = nlmsg_data(nlh); in rtnl_fill_statsinfo()
5714 nlmsg_end(skb, nlh); in rtnl_fill_statsinfo()
5721 nlmsg_cancel(skb, nlh); in rtnl_fill_statsinfo()
5723 nlmsg_end(skb, nlh); in rtnl_fill_statsinfo()
5842 static int rtnl_stats_get_parse(const struct nlmsghdr *nlh, in rtnl_stats_get_parse() argument
5855 err = nlmsg_parse(nlh, sizeof(struct if_stats_msg), tb, in rtnl_stats_get_parse()
5870 static int rtnl_valid_stats_req(const struct nlmsghdr *nlh, bool strict_check, in rtnl_valid_stats_req() argument
5875 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifsm))) { in rtnl_valid_stats_req()
5883 ifsm = nlmsg_data(nlh); in rtnl_valid_stats_req()
5900 static int rtnl_stats_get(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_stats_get() argument
5911 err = rtnl_valid_stats_req(nlh, netlink_strict_get_check(skb), in rtnl_stats_get()
5916 ifsm = nlmsg_data(nlh); in rtnl_stats_get()
5930 err = rtnl_stats_get_parse(nlh, ifsm->filter_mask, &filters, extack); in rtnl_stats_get()
5939 NETLINK_CB(skb).portid, nlh->nlmsg_seq, 0, in rtnl_stats_get()
5971 err = rtnl_valid_stats_req(cb->nlh, cb->strict_check, true, extack); in rtnl_stats_dump()
5975 ifsm = nlmsg_data(cb->nlh); in rtnl_stats_dump()
5981 err = rtnl_stats_get_parse(cb->nlh, ifsm->filter_mask, &filters, in rtnl_stats_dump()
5994 cb->nlh->nlmsg_seq, 0, in rtnl_stats_dump()
6056 static int rtnl_stats_set(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_stats_set() argument
6068 err = rtnl_valid_stats_req(nlh, netlink_strict_get_check(skb), in rtnl_stats_set()
6073 ifsm = nlmsg_data(nlh); in rtnl_stats_set()
6092 err = nlmsg_parse(nlh, sizeof(*ifsm), tb, IFLA_STATS_GETSET_MAX, in rtnl_stats_set()
6122 static int rtnl_mdb_valid_dump_req(const struct nlmsghdr *nlh, in rtnl_mdb_valid_dump_req() argument
6127 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*bpm))) { in rtnl_mdb_valid_dump_req()
6132 bpm = nlmsg_data(nlh); in rtnl_mdb_valid_dump_req()
6137 if (nlmsg_attrlen(nlh, sizeof(*bpm))) { in rtnl_mdb_valid_dump_req()
6160 err = rtnl_mdb_valid_dump_req(cb->nlh, cb->extack); in rtnl_mdb_dump()
6255 static int rtnl_mdb_add(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_mdb_add() argument
6264 err = nlmsg_parse_deprecated(nlh, sizeof(*bpm), tb, in rtnl_mdb_add()
6269 bpm = nlmsg_data(nlh); in rtnl_mdb_add()
6291 return dev->netdev_ops->ndo_mdb_add(dev, tb, nlh->nlmsg_flags, extack); in rtnl_mdb_add()
6294 static int rtnl_mdb_del(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_mdb_del() argument
6303 err = nlmsg_parse_deprecated(nlh, sizeof(*bpm), tb, in rtnl_mdb_del()
6308 bpm = nlmsg_data(nlh); in rtnl_mdb_del()
6335 static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnetlink_rcv_msg() argument
6348 type = nlh->nlmsg_type; in rtnetlink_rcv_msg()
6355 if (nlmsg_len(nlh) < sizeof(struct rtgenmsg)) in rtnetlink_rcv_msg()
6358 family = ((struct rtgenmsg *)nlmsg_data(nlh))->rtgen_family; in rtnetlink_rcv_msg()
6365 if (kind == RTNL_KIND_GET && (nlh->nlmsg_flags & NLM_F_DUMP)) { in rtnetlink_rcv_msg()
6381 min_dump_alloc = rtnl_calcit(skb, nlh); in rtnetlink_rcv_msg()
6397 err = netlink_dump_start(rtnl, skb, nlh, &c); in rtnetlink_rcv_msg()
6421 if (kind == RTNL_KIND_DEL && (nlh->nlmsg_flags & NLM_F_BULK) && in rtnetlink_rcv_msg()
6432 err = doit(skb, nlh, extack); in rtnetlink_rcv_msg()
6441 err = link->doit(skb, nlh, extack); in rtnetlink_rcv_msg()