Lines Matching refs:ifm
1093 const struct ifinfomsg *ifm) in rtnl_dev_combine_flags() argument
1095 unsigned int flags = ifm->ifi_flags; in rtnl_dev_combine_flags()
1098 if (ifm->ifi_change) in rtnl_dev_combine_flags()
1099 flags = (flags & ifm->ifi_change) | in rtnl_dev_combine_flags()
1100 (rtnl_dev_get_flags(dev) & ~ifm->ifi_change); in rtnl_dev_combine_flags()
2025 struct ifinfomsg *ifm; in rtnl_fill_ifinfo() local
2030 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifm), flags); in rtnl_fill_ifinfo()
2034 ifm = nlmsg_data(nlh); in rtnl_fill_ifinfo()
2035 ifm->ifi_family = AF_UNSPEC; in rtnl_fill_ifinfo()
2036 ifm->__ifi_pad = 0; in rtnl_fill_ifinfo()
2037 ifm->ifi_type = READ_ONCE(dev->type); in rtnl_fill_ifinfo()
2038 ifm->ifi_index = READ_ONCE(dev->ifindex); in rtnl_fill_ifinfo()
2039 ifm->ifi_flags = dev_get_flags(dev); in rtnl_fill_ifinfo()
2040 ifm->ifi_change = change; in rtnl_fill_ifinfo()
2391 struct ifinfomsg *ifm; in rtnl_valid_dump_ifinfo_req() local
2393 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in rtnl_valid_dump_ifinfo_req()
2398 ifm = nlmsg_data(nlh); in rtnl_valid_dump_ifinfo_req()
2399 if (ifm->__ifi_pad || ifm->ifi_type || ifm->ifi_flags || in rtnl_valid_dump_ifinfo_req()
2400 ifm->ifi_change) { in rtnl_valid_dump_ifinfo_req()
2404 if (ifm->ifi_index) { in rtnl_valid_dump_ifinfo_req()
2409 return nlmsg_parse_deprecated_strict(nlh, sizeof(*ifm), tb, in rtnl_valid_dump_ifinfo_req()
3020 struct net *tgt_net, struct ifinfomsg *ifm, in do_setlink() argument
3131 if (ifm->ifi_index > 0 && ifname[0]) { in do_setlink()
3151 if (ifm->ifi_flags || ifm->ifi_change) { in do_setlink()
3152 err = netif_change_flags(dev, rtnl_dev_combine_flags(dev, ifm), in do_setlink()
3429 struct ifinfomsg *ifm = nlmsg_data(nlh); in rtnl_setlink() local
3437 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_setlink()
3458 if (ifm->ifi_index > 0) in rtnl_setlink()
3459 dev = __dev_get_by_index(net, ifm->ifi_index); in rtnl_setlink()
3466 err = do_setlink(skb, dev, tgt_net, ifm, extack, tb, 0); in rtnl_setlink()
3531 struct ifinfomsg *ifm = nlmsg_data(nlh); in rtnl_dellink() local
3540 err = nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_dellink()
3558 if (ifm->ifi_index > 0) in rtnl_dellink()
3559 dev = __dev_get_by_index(tgt_net, ifm->ifi_index); in rtnl_dellink()
3565 else if (ifm->ifi_index > 0 || tb[IFLA_IFNAME] || tb[IFLA_ALT_IFNAME]) in rtnl_dellink()
3580 int rtnl_configure_link(struct net_device *dev, const struct ifinfomsg *ifm, in rtnl_configure_link() argument
3587 if (ifm && (ifm->ifi_flags || ifm->ifi_change)) { in rtnl_configure_link()
3588 err = __dev_change_flags(dev, rtnl_dev_combine_flags(dev, ifm), in rtnl_configure_link()
3774 int group, struct ifinfomsg *ifm, in rtnl_group_changelink() argument
3783 err = do_setlink(skb, dev, tgt_net, ifm, extack, tb, 0); in rtnl_group_changelink()
3792 static int rtnl_newlink_create(struct sk_buff *skb, struct ifinfomsg *ifm, in rtnl_newlink_create() argument
3830 dev->ifindex = ifm->ifi_index; in rtnl_newlink_create()
3843 err = rtnl_configure_link(dev, ifm, portid, nlh); in rtnl_newlink_create()
3904 struct ifinfomsg *ifm; in __rtnl_newlink() local
3912 ifm = nlmsg_data(nlh); in __rtnl_newlink()
3913 if (ifm->ifi_index > 0) { in __rtnl_newlink()
3915 dev = __dev_get_by_index(device_net, ifm->ifi_index); in __rtnl_newlink()
3916 } else if (ifm->ifi_index < 0) { in __rtnl_newlink()
3939 ifm, extack, tb); in __rtnl_newlink()
3950 return rtnl_newlink_create(skb, ifm, ops, tgt_net, link_net, peer_net, nlh, in __rtnl_newlink()
4083 struct ifinfomsg *ifm; in rtnl_valid_getlink_req() local
4086 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in rtnl_valid_getlink_req()
4092 return nlmsg_parse_deprecated(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_valid_getlink_req()
4095 ifm = nlmsg_data(nlh); in rtnl_valid_getlink_req()
4096 if (ifm->__ifi_pad || ifm->ifi_type || ifm->ifi_flags || in rtnl_valid_getlink_req()
4097 ifm->ifi_change) { in rtnl_valid_getlink_req()
4102 err = nlmsg_parse_deprecated_strict(nlh, sizeof(*ifm), tb, IFLA_MAX, in rtnl_valid_getlink_req()
4131 struct ifinfomsg *ifm; in rtnl_getlink() local
4158 ifm = nlmsg_data(nlh); in rtnl_getlink()
4159 if (ifm->ifi_index > 0) in rtnl_getlink()
4160 dev = __dev_get_by_index(tgt_net, ifm->ifi_index); in rtnl_getlink()
4248 struct ifinfomsg *ifm; in rtnl_linkprop() local
4253 err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy, extack); in rtnl_linkprop()
4261 ifm = nlmsg_data(nlh); in rtnl_linkprop()
4262 if (ifm->ifi_index > 0) in rtnl_linkprop()
4263 dev = __dev_get_by_index(net, ifm->ifi_index); in rtnl_linkprop()
4949 struct ifinfomsg *ifm; in valid_fdb_dump_legacy() local
4961 ifm = nlmsg_data(nlh); in valid_fdb_dump_legacy()
4962 *brport_idx = ifm->ifi_index; in valid_fdb_dump_legacy()
5222 struct ifinfomsg *ifm; in ndo_dflt_bridge_getlink() local
5229 nlh = nlmsg_put(skb, pid, seq, RTM_NEWLINK, sizeof(*ifm), nlflags); in ndo_dflt_bridge_getlink()
5233 ifm = nlmsg_data(nlh); in ndo_dflt_bridge_getlink()
5234 ifm->ifi_family = AF_BRIDGE; in ndo_dflt_bridge_getlink()
5235 ifm->__ifi_pad = 0; in ndo_dflt_bridge_getlink()
5236 ifm->ifi_type = dev->type; in ndo_dflt_bridge_getlink()
5237 ifm->ifi_index = dev->ifindex; in ndo_dflt_bridge_getlink()
5238 ifm->ifi_flags = dev_get_flags(dev); in ndo_dflt_bridge_getlink()
5239 ifm->ifi_change = 0; in ndo_dflt_bridge_getlink()
5324 struct ifinfomsg *ifm; in valid_bridge_getlink_req() local
5326 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*ifm))) { in valid_bridge_getlink_req()
5331 ifm = nlmsg_data(nlh); in valid_bridge_getlink_req()
5332 if (ifm->__ifi_pad || ifm->ifi_type || ifm->ifi_flags || in valid_bridge_getlink_req()
5333 ifm->ifi_change || ifm->ifi_index) { in valid_bridge_getlink_req()
5485 struct ifinfomsg *ifm; in rtnl_bridge_setlink() local
5491 if (nlmsg_len(nlh) < sizeof(*ifm)) in rtnl_bridge_setlink()
5494 ifm = nlmsg_data(nlh); in rtnl_bridge_setlink()
5495 if (ifm->ifi_family != AF_BRIDGE) in rtnl_bridge_setlink()
5498 dev = __dev_get_by_index(net, ifm->ifi_index); in rtnl_bridge_setlink()
5565 struct ifinfomsg *ifm; in rtnl_bridge_dellink() local
5572 if (nlmsg_len(nlh) < sizeof(*ifm)) in rtnl_bridge_dellink()
5575 ifm = nlmsg_data(nlh); in rtnl_bridge_dellink()
5576 if (ifm->ifi_family != AF_BRIDGE) in rtnl_bridge_dellink()
5579 dev = __dev_get_by_index(net, ifm->ifi_index); in rtnl_bridge_dellink()