• Home
  • Raw
  • Download

Lines Matching refs:nlh

726 		 struct nlmsghdr *nlh, gfp_t flags)  in rtnl_notify()  argument
730 nlmsg_notify(rtnl, skb, pid, group, nlmsg_report(nlh), flags); in rtnl_notify()
1706 struct nlmsghdr *nlh; in rtnl_fill_ifinfo() local
1710 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifm), flags); in rtnl_fill_ifinfo()
1711 if (nlh == NULL) in rtnl_fill_ifinfo()
1714 ifm = nlmsg_data(nlh); in rtnl_fill_ifinfo()
1831 nlmsg_end(skb, nlh); in rtnl_fill_ifinfo()
1837 nlmsg_cancel(skb, nlh); in rtnl_fill_ifinfo()
2030 static int rtnl_valid_dump_ifinfo_req(const struct nlmsghdr *nlh, in rtnl_valid_dump_ifinfo_req() argument
2039 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in rtnl_valid_dump_ifinfo_req()
2044 ifm = nlmsg_data(nlh); in rtnl_valid_dump_ifinfo_req()
2055 return nlmsg_parse_deprecated_strict(nlh, sizeof(*ifm), tb, in rtnl_valid_dump_ifinfo_req()
2067 hdrlen = nlmsg_len(nlh) < sizeof(struct ifinfomsg) ? in rtnl_valid_dump_ifinfo_req()
2070 return nlmsg_parse_deprecated(nlh, hdrlen, tb, IFLA_MAX, ifla_policy, in rtnl_valid_dump_ifinfo_req()
2077 const struct nlmsghdr *nlh = cb->nlh; in rtnl_dump_ifinfo() local
2095 err = rtnl_valid_dump_ifinfo_req(nlh, cb->strict_check, tb, extack); in rtnl_dump_ifinfo()
2149 nlh->nlmsg_seq, 0, flags, in rtnl_dump_ifinfo()
2996 static int rtnl_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_setlink() argument
3006 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_setlink()
3021 ifm = nlmsg_data(nlh); in rtnl_setlink()
3091 static int rtnl_dellink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_dellink() argument
3102 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_dellink()
3119 ifm = nlmsg_data(nlh); in rtnl_dellink()
3279 static int __rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh, in __rtnl_newlink() argument
3303 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in __rtnl_newlink()
3317 ifm = nlmsg_data(nlh); in __rtnl_newlink()
3402 if (nlh->nlmsg_flags & NLM_F_EXCL) in __rtnl_newlink()
3404 if (nlh->nlmsg_flags & NLM_F_REPLACE) in __rtnl_newlink()
3432 if (!(nlh->nlmsg_flags & NLM_F_CREATE)) { in __rtnl_newlink()
3539 static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_newlink() argument
3549 ret = __rtnl_newlink(skb, nlh, attr, extack); in rtnl_newlink()
3555 const struct nlmsghdr *nlh, in rtnl_valid_getlink_req() argument
3562 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in rtnl_valid_getlink_req()
3568 return nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_valid_getlink_req()
3571 ifm = nlmsg_data(nlh); in rtnl_valid_getlink_req()
3578 err = nlmsg_parse_deprecated_strict(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_valid_getlink_req()
3602 static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_getlink() argument
3615 err = rtnl_valid_getlink_req(skb, nlh, tb, extack); in rtnl_getlink()
3634 ifm = nlmsg_data(nlh); in rtnl_getlink()
3654 nlh->nlmsg_seq, 0, 0, ext_filter_mask, in rtnl_getlink()
3711 static int rtnl_linkprop(int cmd, struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_linkprop() argument
3722 err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy, extack); in rtnl_linkprop()
3730 ifm = nlmsg_data(nlh); in rtnl_linkprop()
3760 static int rtnl_newlinkprop(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_newlinkprop() argument
3763 return rtnl_linkprop(RTM_NEWLINKPROP, skb, nlh, extack); in rtnl_newlinkprop()
3766 static int rtnl_dellinkprop(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_dellinkprop() argument
3769 return rtnl_linkprop(RTM_DELLINKPROP, skb, nlh, extack); in rtnl_dellinkprop()
3772 static u32 rtnl_calcit(struct sk_buff *skb, struct nlmsghdr *nlh) in rtnl_calcit() argument
3782 hdrlen = nlmsg_len(nlh) < sizeof(struct ifinfomsg) ? in rtnl_calcit()
3785 if (nlmsg_parse_deprecated(nlh, hdrlen, tb, IFLA_MAX, ifla_policy, NULL) >= 0) { in rtnl_calcit()
3810 int type = cb->nlh->nlmsg_type - RTM_BASE; in rtnl_dump_all()
3925 struct nlmsghdr *nlh; in nlmsg_populate_fdb_fill() local
3928 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ndm), nlflags); in nlmsg_populate_fdb_fill()
3929 if (!nlh) in nlmsg_populate_fdb_fill()
3932 ndm = nlmsg_data(nlh); in nlmsg_populate_fdb_fill()
3947 nlmsg_end(skb, nlh); in nlmsg_populate_fdb_fill()
3951 nlmsg_cancel(skb, nlh); in nlmsg_populate_fdb_fill()
4046 static int rtnl_fdb_add(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_fdb_add() argument
4057 err = nlmsg_parse_deprecated(nlh, sizeof(*ndm), tb, NDA_MAX, NULL, in rtnl_fdb_add()
4062 ndm = nlmsg_data(nlh); in rtnl_fdb_add()
4099 nlh->nlmsg_flags, extack); in rtnl_fdb_add()
4111 nlh->nlmsg_flags, in rtnl_fdb_add()
4115 nlh->nlmsg_flags); in rtnl_fdb_add()
4154 static int rtnl_fdb_del(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_fdb_del() argument
4168 err = nlmsg_parse_deprecated(nlh, sizeof(*ndm), tb, NDA_MAX, NULL, in rtnl_fdb_del()
4173 ndm = nlmsg_data(nlh); in rtnl_fdb_del()
4247 seq = cb->nlh->nlmsg_seq; in nlmsg_populate_fdb()
4298 static int valid_fdb_dump_strict(const struct nlmsghdr *nlh, in valid_fdb_dump_strict() argument
4306 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ndm))) { in valid_fdb_dump_strict()
4311 ndm = nlmsg_data(nlh); in valid_fdb_dump_strict()
4318 err = nlmsg_parse_deprecated_strict(nlh, sizeof(struct ndmsg), tb, in valid_fdb_dump_strict()
4352 static int valid_fdb_dump_legacy(const struct nlmsghdr *nlh, in valid_fdb_dump_legacy() argument
4366 if (nlmsg_len(nlh) != sizeof(struct ndmsg) && in valid_fdb_dump_legacy()
4367 (nlmsg_len(nlh) != sizeof(struct ndmsg) + in valid_fdb_dump_legacy()
4371 err = nlmsg_parse_deprecated(nlh, sizeof(struct ifinfomsg), in valid_fdb_dump_legacy()
4381 ifm = nlmsg_data(nlh); in valid_fdb_dump_legacy()
4403 err = valid_fdb_dump_strict(cb->nlh, &br_idx, &brport_idx, in rtnl_fdb_dump()
4406 err = valid_fdb_dump_legacy(cb->nlh, &br_idx, &brport_idx, in rtnl_fdb_dump()
4487 static int valid_fdb_get_strict(const struct nlmsghdr *nlh, in valid_fdb_get_strict() argument
4495 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ndm))) { in valid_fdb_get_strict()
4500 ndm = nlmsg_data(nlh); in valid_fdb_get_strict()
4512 err = nlmsg_parse_deprecated_strict(nlh, sizeof(struct ndmsg), tb, in valid_fdb_get_strict()
4550 static int rtnl_fdb_get(struct sk_buff *in_skb, struct nlmsghdr *nlh, in rtnl_fdb_get() argument
4565 err = valid_fdb_get_strict(nlh, tb, &ndm_flags, &br_idx, in rtnl_fdb_get()
4636 nlh->nlmsg_seq, extack); in rtnl_fdb_get()
4662 struct nlmsghdr *nlh; in ndo_dflt_bridge_getlink() local
4670 nlh = nlmsg_put(skb, pid, seq, RTM_NEWLINK, sizeof(*ifm), nlflags); in ndo_dflt_bridge_getlink()
4671 if (nlh == NULL) in ndo_dflt_bridge_getlink()
4674 ifm = nlmsg_data(nlh); in ndo_dflt_bridge_getlink()
4749 nlmsg_end(skb, nlh); in ndo_dflt_bridge_getlink()
4752 nlmsg_cancel(skb, nlh); in ndo_dflt_bridge_getlink()
4757 static int valid_bridge_getlink_req(const struct nlmsghdr *nlh, in valid_bridge_getlink_req() argument
4767 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in valid_bridge_getlink_req()
4772 ifm = nlmsg_data(nlh); in valid_bridge_getlink_req()
4779 err = nlmsg_parse_deprecated_strict(nlh, in valid_bridge_getlink_req()
4784 err = nlmsg_parse_deprecated(nlh, sizeof(struct ifinfomsg), in valid_bridge_getlink_req()
4813 const struct nlmsghdr *nlh = cb->nlh; in rtnl_bridge_getlink() local
4818 u32 seq = nlh->nlmsg_seq; in rtnl_bridge_getlink()
4822 err = valid_bridge_getlink_req(nlh, cb->strict_check, &filter_mask, in rtnl_bridge_getlink()
4922 static int rtnl_bridge_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_bridge_setlink() argument
4932 if (nlmsg_len(nlh) < sizeof(*ifm)) in rtnl_bridge_setlink()
4935 ifm = nlmsg_data(nlh); in rtnl_bridge_setlink()
4945 br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC); in rtnl_bridge_setlink()
4971 err = br_dev->netdev_ops->ndo_bridge_setlink(dev, nlh, flags, in rtnl_bridge_setlink()
4983 err = dev->netdev_ops->ndo_bridge_setlink(dev, nlh, in rtnl_bridge_setlink()
5002 static int rtnl_bridge_dellink(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_bridge_dellink() argument
5013 if (nlmsg_len(nlh) < sizeof(*ifm)) in rtnl_bridge_dellink()
5016 ifm = nlmsg_data(nlh); in rtnl_bridge_dellink()
5026 br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC); in rtnl_bridge_dellink()
5048 err = br_dev->netdev_ops->ndo_bridge_dellink(dev, nlh, flags); in rtnl_bridge_dellink()
5059 err = dev->netdev_ops->ndo_bridge_dellink(dev, nlh, in rtnl_bridge_dellink()
5175 struct nlmsghdr *nlh; in rtnl_fill_statsinfo() local
5182 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifsm), flags); in rtnl_fill_statsinfo()
5183 if (!nlh) in rtnl_fill_statsinfo()
5186 ifsm = nlmsg_data(nlh); in rtnl_fill_statsinfo()
5305 nlmsg_end(skb, nlh); in rtnl_fill_statsinfo()
5312 nlmsg_cancel(skb, nlh); in rtnl_fill_statsinfo()
5314 nlmsg_end(skb, nlh); in rtnl_fill_statsinfo()
5383 static int rtnl_valid_stats_req(const struct nlmsghdr *nlh, bool strict_check, in rtnl_valid_stats_req() argument
5388 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifsm))) { in rtnl_valid_stats_req()
5396 ifsm = nlmsg_data(nlh); in rtnl_valid_stats_req()
5405 if (nlmsg_attrlen(nlh, sizeof(*ifsm))) { in rtnl_valid_stats_req()
5417 static int rtnl_stats_get(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnl_stats_get() argument
5428 err = rtnl_valid_stats_req(nlh, netlink_strict_get_check(skb), in rtnl_stats_get()
5433 ifsm = nlmsg_data(nlh); in rtnl_stats_get()
5451 NETLINK_CB(skb).portid, nlh->nlmsg_seq, 0, in rtnl_stats_get()
5483 err = rtnl_valid_stats_req(cb->nlh, cb->strict_check, true, extack); in rtnl_stats_dump()
5487 ifsm = nlmsg_data(cb->nlh); in rtnl_stats_dump()
5502 cb->nlh->nlmsg_seq, 0, in rtnl_stats_dump()
5530 static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, in rtnetlink_rcv_msg() argument
5543 type = nlh->nlmsg_type; in rtnetlink_rcv_msg()
5550 if (nlmsg_len(nlh) < sizeof(struct rtgenmsg)) in rtnetlink_rcv_msg()
5553 family = ((struct rtgenmsg *)nlmsg_data(nlh))->rtgen_family; in rtnetlink_rcv_msg()
5560 if (kind == 2 && nlh->nlmsg_flags&NLM_F_DUMP) { in rtnetlink_rcv_msg()
5576 min_dump_alloc = rtnl_calcit(skb, nlh); in rtnetlink_rcv_msg()
5592 err = netlink_dump_start(rtnl, skb, nlh, &c); in rtnetlink_rcv_msg()
5620 err = doit(skb, nlh, extack); in rtnetlink_rcv_msg()
5629 err = link->doit(skb, nlh, extack); in rtnetlink_rcv_msg()