mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 21:54:11 +08:00
net: convert to nla_get_*_default()
Most of the original conversion is from the spatch below, but I edited some and left out other instances that were either buggy after conversion (where default values don't fit into the type) or just looked strange. @@ expression attr, def; expression val; identifier fn =~ "^nla_get_.*"; fresh identifier dfn = fn ## "_default"; @@ ( -if (attr) - val = fn(attr); -else - val = def; +val = dfn(attr, def); | -if (!attr) - val = def; -else - val = fn(attr); +val = dfn(attr, def); | -if (!attr) - return def; -return fn(attr); +return dfn(attr, def); | -attr ? fn(attr) : def +dfn(attr, def) | -!attr ? def : fn(attr) +dfn(attr, def) ) Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Toke Høiland-Jørgensen <toke@kernel.org> Link: https://patch.msgid.link/20241108114145.0580b8684e7f.I740beeaa2f70ebfc19bfca1045a24d6151992790@changeid Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
7f4b3960e5
commit
a885a6b2d3
@ -3206,15 +3206,11 @@ static int amt_newlink(struct net *net, struct net_device *dev,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data[IFLA_AMT_RELAY_PORT])
|
amt->relay_port = nla_get_be16_default(data[IFLA_AMT_RELAY_PORT],
|
||||||
amt->relay_port = nla_get_be16(data[IFLA_AMT_RELAY_PORT]);
|
htons(IANA_AMT_UDP_PORT));
|
||||||
else
|
|
||||||
amt->relay_port = htons(IANA_AMT_UDP_PORT);
|
|
||||||
|
|
||||||
if (data[IFLA_AMT_GATEWAY_PORT])
|
amt->gw_port = nla_get_be16_default(data[IFLA_AMT_GATEWAY_PORT],
|
||||||
amt->gw_port = nla_get_be16(data[IFLA_AMT_GATEWAY_PORT]);
|
htons(IANA_AMT_UDP_PORT));
|
||||||
else
|
|
||||||
amt->gw_port = htons(IANA_AMT_UDP_PORT);
|
|
||||||
|
|
||||||
if (!amt->relay_port) {
|
if (!amt->relay_port) {
|
||||||
NL_SET_ERR_MSG_ATTR(extack, tb[IFLA_AMT_DISCOVERY_IP],
|
NL_SET_ERR_MSG_ATTR(extack, tb[IFLA_AMT_DISCOVERY_IP],
|
||||||
|
@ -1491,10 +1491,8 @@ static int gtp_newlink(struct net *src_net, struct net_device *dev,
|
|||||||
}
|
}
|
||||||
gtp->role = role;
|
gtp->role = role;
|
||||||
|
|
||||||
if (!data[IFLA_GTP_RESTART_COUNT])
|
gtp->restart_count = nla_get_u8_default(data[IFLA_GTP_RESTART_COUNT],
|
||||||
gtp->restart_count = 0;
|
0);
|
||||||
else
|
|
||||||
gtp->restart_count = nla_get_u8(data[IFLA_GTP_RESTART_COUNT]);
|
|
||||||
|
|
||||||
gtp->net = src_net;
|
gtp->net = src_net;
|
||||||
|
|
||||||
@ -1829,10 +1827,7 @@ static struct pdp_ctx *gtp_pdp_add(struct gtp_dev *gtp, struct sock *sk,
|
|||||||
|
|
||||||
version = nla_get_u32(info->attrs[GTPA_VERSION]);
|
version = nla_get_u32(info->attrs[GTPA_VERSION]);
|
||||||
|
|
||||||
if (info->attrs[GTPA_FAMILY])
|
family = nla_get_u8_default(info->attrs[GTPA_FAMILY], AF_INET);
|
||||||
family = nla_get_u8(info->attrs[GTPA_FAMILY]);
|
|
||||||
else
|
|
||||||
family = AF_INET;
|
|
||||||
|
|
||||||
#if !IS_ENABLED(CONFIG_IPV6)
|
#if !IS_ENABLED(CONFIG_IPV6)
|
||||||
if (family == AF_INET6)
|
if (family == AF_INET6)
|
||||||
@ -2069,10 +2064,7 @@ static struct pdp_ctx *gtp_find_pdp_by_link(struct net *net,
|
|||||||
struct gtp_dev *gtp;
|
struct gtp_dev *gtp;
|
||||||
int family;
|
int family;
|
||||||
|
|
||||||
if (nla[GTPA_FAMILY])
|
family = nla_get_u8_default(nla[GTPA_FAMILY], AF_INET);
|
||||||
family = nla_get_u8(nla[GTPA_FAMILY]);
|
|
||||||
else
|
|
||||||
family = AF_INET;
|
|
||||||
|
|
||||||
gtp = gtp_find_dev(net, nla);
|
gtp = gtp_find_dev(net, nla);
|
||||||
if (!gtp)
|
if (!gtp)
|
||||||
|
@ -4299,9 +4299,9 @@ static int macsec_validate_attr(struct nlattr *tb[], struct nlattr *data[],
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
es = data[IFLA_MACSEC_ES] ? nla_get_u8(data[IFLA_MACSEC_ES]) : false;
|
es = nla_get_u8_default(data[IFLA_MACSEC_ES], false);
|
||||||
sci = data[IFLA_MACSEC_INC_SCI] ? nla_get_u8(data[IFLA_MACSEC_INC_SCI]) : false;
|
sci = nla_get_u8_default(data[IFLA_MACSEC_INC_SCI], false);
|
||||||
scb = data[IFLA_MACSEC_SCB] ? nla_get_u8(data[IFLA_MACSEC_SCB]) : false;
|
scb = nla_get_u8_default(data[IFLA_MACSEC_SCB], false);
|
||||||
|
|
||||||
if ((sci && (scb || es)) || (scb && es))
|
if ((sci && (scb || es)) || (scb && es))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -1232,10 +1232,7 @@ static int vxlan_fdb_parse(struct nlattr *tb[], struct vxlan_dev *vxlan,
|
|||||||
*ifindex = 0;
|
*ifindex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tb[NDA_NH_ID])
|
*nhid = nla_get_u32_default(tb[NDA_NH_ID], 0);
|
||||||
*nhid = nla_get_u32(tb[NDA_NH_ID]);
|
|
||||||
else
|
|
||||||
*nhid = 0;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -161,10 +161,8 @@ static int vlan_newlink(struct net *src_net, struct net_device *dev,
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data[IFLA_VLAN_PROTOCOL])
|
proto = nla_get_be16_default(data[IFLA_VLAN_PROTOCOL],
|
||||||
proto = nla_get_be16(data[IFLA_VLAN_PROTOCOL]);
|
htons(ETH_P_8021Q));
|
||||||
else
|
|
||||||
proto = htons(ETH_P_8021Q);
|
|
||||||
|
|
||||||
vlan->vlan_proto = proto;
|
vlan->vlan_proto = proto;
|
||||||
vlan->vlan_id = nla_get_u16(data[IFLA_VLAN_ID]);
|
vlan->vlan_id = nla_get_u16(data[IFLA_VLAN_ID]);
|
||||||
|
@ -558,8 +558,7 @@ static int fib_nl2rule(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||||||
nlrule->pref = fib_default_rule_pref(ops);
|
nlrule->pref = fib_default_rule_pref(ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
nlrule->proto = tb[FRA_PROTOCOL] ?
|
nlrule->proto = nla_get_u8_default(tb[FRA_PROTOCOL], RTPROT_UNSPEC);
|
||||||
nla_get_u8(tb[FRA_PROTOCOL]) : RTPROT_UNSPEC;
|
|
||||||
|
|
||||||
if (tb[FRA_IIFNAME]) {
|
if (tb[FRA_IIFNAME]) {
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
|
@ -2940,10 +2940,7 @@ static int do_setlink(const struct sk_buff *skb, struct net_device *dev,
|
|||||||
const char *pat = ifname[0] ? ifname : NULL;
|
const char *pat = ifname[0] ? ifname : NULL;
|
||||||
int new_ifindex;
|
int new_ifindex;
|
||||||
|
|
||||||
if (tb[IFLA_NEW_IFINDEX])
|
new_ifindex = nla_get_s32_default(tb[IFLA_NEW_IFINDEX], 0);
|
||||||
new_ifindex = nla_get_s32(tb[IFLA_NEW_IFINDEX]);
|
|
||||||
else
|
|
||||||
new_ifindex = 0;
|
|
||||||
|
|
||||||
err = __dev_change_net_namespace(dev, tgt_net, pat, new_ifindex);
|
err = __dev_change_net_namespace(dev, tgt_net, pat, new_ifindex);
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -531,10 +531,8 @@ int devlink_nl_reload_doit(struct sk_buff *skb, struct genl_info *info)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->attrs[DEVLINK_ATTR_RELOAD_ACTION])
|
action = nla_get_u8_default(info->attrs[DEVLINK_ATTR_RELOAD_ACTION],
|
||||||
action = nla_get_u8(info->attrs[DEVLINK_ATTR_RELOAD_ACTION]);
|
DEVLINK_RELOAD_ACTION_DRIVER_REINIT);
|
||||||
else
|
|
||||||
action = DEVLINK_RELOAD_ACTION_DRIVER_REINIT;
|
|
||||||
|
|
||||||
if (!devlink_reload_action_is_supported(devlink, action)) {
|
if (!devlink_reload_action_is_supported(devlink, action)) {
|
||||||
NL_SET_ERR_MSG(info->extack, "Requested reload action is not supported by the driver");
|
NL_SET_ERR_MSG(info->extack, "Requested reload action is not supported by the driver");
|
||||||
|
@ -82,10 +82,7 @@ static int hsr_newlink(struct net *src_net, struct net_device *dev,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data[IFLA_HSR_MULTICAST_SPEC])
|
multicast_spec = nla_get_u8_default(data[IFLA_HSR_MULTICAST_SPEC], 0);
|
||||||
multicast_spec = 0;
|
|
||||||
else
|
|
||||||
multicast_spec = nla_get_u8(data[IFLA_HSR_MULTICAST_SPEC]);
|
|
||||||
|
|
||||||
if (data[IFLA_HSR_PROTOCOL])
|
if (data[IFLA_HSR_PROTOCOL])
|
||||||
proto = nla_get_u8(data[IFLA_HSR_PROTOCOL]);
|
proto = nla_get_u8(data[IFLA_HSR_PROTOCOL]);
|
||||||
|
@ -202,10 +202,7 @@ int ieee802154_associate_req(struct sk_buff *skb, struct genl_info *info)
|
|||||||
addr.pan_id = nla_get_shortaddr(
|
addr.pan_id = nla_get_shortaddr(
|
||||||
info->attrs[IEEE802154_ATTR_COORD_PAN_ID]);
|
info->attrs[IEEE802154_ATTR_COORD_PAN_ID]);
|
||||||
|
|
||||||
if (info->attrs[IEEE802154_ATTR_PAGE])
|
page = nla_get_u8_default(info->attrs[IEEE802154_ATTR_PAGE], 0);
|
||||||
page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
|
|
||||||
else
|
|
||||||
page = 0;
|
|
||||||
|
|
||||||
ret = ieee802154_mlme_ops(dev)->assoc_req(dev, &addr,
|
ret = ieee802154_mlme_ops(dev)->assoc_req(dev, &addr,
|
||||||
nla_get_u8(info->attrs[IEEE802154_ATTR_CHANNEL]),
|
nla_get_u8(info->attrs[IEEE802154_ATTR_CHANNEL]),
|
||||||
@ -338,10 +335,7 @@ int ieee802154_start_req(struct sk_buff *skb, struct genl_info *info)
|
|||||||
blx = nla_get_u8(info->attrs[IEEE802154_ATTR_BAT_EXT]);
|
blx = nla_get_u8(info->attrs[IEEE802154_ATTR_BAT_EXT]);
|
||||||
coord_realign = nla_get_u8(info->attrs[IEEE802154_ATTR_COORD_REALIGN]);
|
coord_realign = nla_get_u8(info->attrs[IEEE802154_ATTR_COORD_REALIGN]);
|
||||||
|
|
||||||
if (info->attrs[IEEE802154_ATTR_PAGE])
|
page = nla_get_u8_default(info->attrs[IEEE802154_ATTR_PAGE], 0);
|
||||||
page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
|
|
||||||
else
|
|
||||||
page = 0;
|
|
||||||
|
|
||||||
if (addr.short_addr == cpu_to_le16(IEEE802154_ADDR_BROADCAST)) {
|
if (addr.short_addr == cpu_to_le16(IEEE802154_ADDR_BROADCAST)) {
|
||||||
ieee802154_nl_start_confirm(dev, IEEE802154_NO_SHORT_ADDRESS);
|
ieee802154_nl_start_confirm(dev, IEEE802154_NO_SHORT_ADDRESS);
|
||||||
@ -388,10 +382,7 @@ int ieee802154_scan_req(struct sk_buff *skb, struct genl_info *info)
|
|||||||
channels = nla_get_u32(info->attrs[IEEE802154_ATTR_CHANNELS]);
|
channels = nla_get_u32(info->attrs[IEEE802154_ATTR_CHANNELS]);
|
||||||
duration = nla_get_u8(info->attrs[IEEE802154_ATTR_DURATION]);
|
duration = nla_get_u8(info->attrs[IEEE802154_ATTR_DURATION]);
|
||||||
|
|
||||||
if (info->attrs[IEEE802154_ATTR_PAGE])
|
page = nla_get_u8_default(info->attrs[IEEE802154_ATTR_PAGE], 0);
|
||||||
page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
|
|
||||||
else
|
|
||||||
page = 0;
|
|
||||||
|
|
||||||
ret = ieee802154_mlme_ops(dev)->scan_req(dev, type, channels,
|
ret = ieee802154_mlme_ops(dev)->scan_req(dev, type, channels,
|
||||||
page, duration);
|
page, duration);
|
||||||
|
@ -1438,22 +1438,18 @@ static int nl802154_trigger_scan(struct sk_buff *skb, struct genl_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Use current page by default */
|
/* Use current page by default */
|
||||||
if (info->attrs[NL802154_ATTR_PAGE])
|
request->page = nla_get_u8_default(info->attrs[NL802154_ATTR_PAGE],
|
||||||
request->page = nla_get_u8(info->attrs[NL802154_ATTR_PAGE]);
|
wpan_phy->current_page);
|
||||||
else
|
|
||||||
request->page = wpan_phy->current_page;
|
|
||||||
|
|
||||||
/* Scan all supported channels by default */
|
/* Scan all supported channels by default */
|
||||||
if (info->attrs[NL802154_ATTR_SCAN_CHANNELS])
|
request->channels =
|
||||||
request->channels = nla_get_u32(info->attrs[NL802154_ATTR_SCAN_CHANNELS]);
|
nla_get_u32_default(info->attrs[NL802154_ATTR_SCAN_CHANNELS],
|
||||||
else
|
wpan_phy->supported.channels[request->page]);
|
||||||
request->channels = wpan_phy->supported.channels[request->page];
|
|
||||||
|
|
||||||
/* Use maximum duration order by default */
|
/* Use maximum duration order by default */
|
||||||
if (info->attrs[NL802154_ATTR_SCAN_DURATION])
|
request->duration =
|
||||||
request->duration = nla_get_u8(info->attrs[NL802154_ATTR_SCAN_DURATION]);
|
nla_get_u8_default(info->attrs[NL802154_ATTR_SCAN_DURATION],
|
||||||
else
|
IEEE802154_MAX_SCAN_DURATION);
|
||||||
request->duration = IEEE802154_MAX_SCAN_DURATION;
|
|
||||||
|
|
||||||
err = rdev_trigger_scan(rdev, request);
|
err = rdev_trigger_scan(rdev, request);
|
||||||
if (err) {
|
if (err) {
|
||||||
@ -1598,10 +1594,8 @@ nl802154_send_beacons(struct sk_buff *skb, struct genl_info *info)
|
|||||||
request->wpan_phy = wpan_phy;
|
request->wpan_phy = wpan_phy;
|
||||||
|
|
||||||
/* Use maximum duration order by default */
|
/* Use maximum duration order by default */
|
||||||
if (info->attrs[NL802154_ATTR_BEACON_INTERVAL])
|
request->interval = nla_get_u8_default(info->attrs[NL802154_ATTR_BEACON_INTERVAL],
|
||||||
request->interval = nla_get_u8(info->attrs[NL802154_ATTR_BEACON_INTERVAL]);
|
IEEE802154_MAX_SCAN_DURATION);
|
||||||
else
|
|
||||||
request->interval = IEEE802154_MAX_SCAN_DURATION;
|
|
||||||
|
|
||||||
err = rdev_send_beacons(rdev, request);
|
err = rdev_send_beacons(rdev, request);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -926,8 +926,7 @@ static struct in_ifaddr *inet_rtm_to_ifa(struct net *net, struct nlmsghdr *nlh,
|
|||||||
|
|
||||||
ifa->ifa_prefixlen = ifm->ifa_prefixlen;
|
ifa->ifa_prefixlen = ifm->ifa_prefixlen;
|
||||||
ifa->ifa_mask = inet_make_mask(ifm->ifa_prefixlen);
|
ifa->ifa_mask = inet_make_mask(ifm->ifa_prefixlen);
|
||||||
ifa->ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) :
|
ifa->ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
|
||||||
ifm->ifa_flags;
|
|
||||||
ifa->ifa_scope = ifm->ifa_scope;
|
ifa->ifa_scope = ifm->ifa_scope;
|
||||||
ifa->ifa_local = nla_get_in_addr(tb[IFA_LOCAL]);
|
ifa->ifa_local = nla_get_in_addr(tb[IFA_LOCAL]);
|
||||||
ifa->ifa_address = nla_get_in_addr(tb[IFA_ADDRESS]);
|
ifa->ifa_address = nla_get_in_addr(tb[IFA_ADDRESS]);
|
||||||
|
@ -2546,9 +2546,9 @@ static int ipmr_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
|
|||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto errout;
|
goto errout;
|
||||||
|
|
||||||
src = tb[RTA_SRC] ? nla_get_in_addr(tb[RTA_SRC]) : 0;
|
src = nla_get_in_addr_default(tb[RTA_SRC], 0);
|
||||||
grp = tb[RTA_DST] ? nla_get_in_addr(tb[RTA_DST]) : 0;
|
grp = nla_get_in_addr_default(tb[RTA_DST], 0);
|
||||||
tableid = tb[RTA_TABLE] ? nla_get_u32(tb[RTA_TABLE]) : 0;
|
tableid = nla_get_u32_default(tb[RTA_TABLE], 0);
|
||||||
|
|
||||||
mrt = ipmr_get_table(net, tableid ? tableid : RT_TABLE_DEFAULT);
|
mrt = ipmr_get_table(net, tableid ? tableid : RT_TABLE_DEFAULT);
|
||||||
if (!mrt) {
|
if (!mrt) {
|
||||||
|
@ -3247,12 +3247,8 @@ static int nh_valid_get_del_req(const struct nlmsghdr *nlh,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (op_flags) {
|
if (op_flags)
|
||||||
if (tb[NHA_OP_FLAGS])
|
*op_flags = nla_get_u32_default(tb[NHA_OP_FLAGS], 0);
|
||||||
*op_flags = nla_get_u32(tb[NHA_OP_FLAGS]);
|
|
||||||
else
|
|
||||||
*op_flags = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -3433,10 +3429,7 @@ static int nh_valid_dump_req(const struct nlmsghdr *nlh,
|
|||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (tb[NHA_OP_FLAGS])
|
filter->op_flags = nla_get_u32_default(tb[NHA_OP_FLAGS], 0);
|
||||||
filter->op_flags = nla_get_u32(tb[NHA_OP_FLAGS]);
|
|
||||||
else
|
|
||||||
filter->op_flags = 0;
|
|
||||||
|
|
||||||
return __nh_valid_dump_req(nlh, tb, filter, cb->extack);
|
return __nh_valid_dump_req(nlh, tb, filter, cb->extack);
|
||||||
}
|
}
|
||||||
|
@ -3231,10 +3231,10 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
rtm = nlmsg_data(nlh);
|
rtm = nlmsg_data(nlh);
|
||||||
src = tb[RTA_SRC] ? nla_get_in_addr(tb[RTA_SRC]) : 0;
|
src = nla_get_in_addr_default(tb[RTA_SRC], 0);
|
||||||
dst = tb[RTA_DST] ? nla_get_in_addr(tb[RTA_DST]) : 0;
|
dst = nla_get_in_addr_default(tb[RTA_DST], 0);
|
||||||
iif = tb[RTA_IIF] ? nla_get_u32(tb[RTA_IIF]) : 0;
|
iif = nla_get_u32_default(tb[RTA_IIF], 0);
|
||||||
mark = tb[RTA_MARK] ? nla_get_u32(tb[RTA_MARK]) : 0;
|
mark = nla_get_u32_default(tb[RTA_MARK], 0);
|
||||||
if (tb[RTA_UID])
|
if (tb[RTA_UID])
|
||||||
uid = make_kuid(current_user_ns(), nla_get_u32(tb[RTA_UID]));
|
uid = make_kuid(current_user_ns(), nla_get_u32(tb[RTA_UID]));
|
||||||
else
|
else
|
||||||
@ -3260,7 +3260,7 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
|
|||||||
fl4.daddr = dst;
|
fl4.daddr = dst;
|
||||||
fl4.saddr = src;
|
fl4.saddr = src;
|
||||||
fl4.flowi4_tos = rtm->rtm_tos & INET_DSCP_MASK;
|
fl4.flowi4_tos = rtm->rtm_tos & INET_DSCP_MASK;
|
||||||
fl4.flowi4_oif = tb[RTA_OIF] ? nla_get_u32(tb[RTA_OIF]) : 0;
|
fl4.flowi4_oif = nla_get_u32_default(tb[RTA_OIF], 0);
|
||||||
fl4.flowi4_mark = mark;
|
fl4.flowi4_mark = mark;
|
||||||
fl4.flowi4_uid = uid;
|
fl4.flowi4_uid = uid;
|
||||||
if (sport)
|
if (sport)
|
||||||
|
@ -4793,7 +4793,7 @@ inet6_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||||||
if (!pfx)
|
if (!pfx)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) : ifm->ifa_flags;
|
ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
|
||||||
|
|
||||||
/* We ignore other flags so far. */
|
/* We ignore other flags so far. */
|
||||||
ifa_flags &= IFA_F_MANAGETEMPADDR;
|
ifa_flags &= IFA_F_MANAGETEMPADDR;
|
||||||
@ -5018,10 +5018,7 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tb[IFA_FLAGS])
|
cfg.ifa_flags = nla_get_u32_default(tb[IFA_FLAGS], ifm->ifa_flags);
|
||||||
cfg.ifa_flags = nla_get_u32(tb[IFA_FLAGS]);
|
|
||||||
else
|
|
||||||
cfg.ifa_flags = ifm->ifa_flags;
|
|
||||||
|
|
||||||
/* We ignore other flags so far. */
|
/* We ignore other flags so far. */
|
||||||
cfg.ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS |
|
cfg.ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS |
|
||||||
|
@ -105,16 +105,11 @@ static int parse_nl_config(struct genl_info *info,
|
|||||||
xp->ip.locator_match.v64 = (__force __be64)nla_get_u64(
|
xp->ip.locator_match.v64 = (__force __be64)nla_get_u64(
|
||||||
info->attrs[ILA_ATTR_LOCATOR_MATCH]);
|
info->attrs[ILA_ATTR_LOCATOR_MATCH]);
|
||||||
|
|
||||||
if (info->attrs[ILA_ATTR_CSUM_MODE])
|
xp->ip.csum_mode = nla_get_u8_default(info->attrs[ILA_ATTR_CSUM_MODE],
|
||||||
xp->ip.csum_mode = nla_get_u8(info->attrs[ILA_ATTR_CSUM_MODE]);
|
ILA_CSUM_NO_ACTION);
|
||||||
else
|
|
||||||
xp->ip.csum_mode = ILA_CSUM_NO_ACTION;
|
|
||||||
|
|
||||||
if (info->attrs[ILA_ATTR_IDENT_TYPE])
|
xp->ip.ident_type = nla_get_u8_default(info->attrs[ILA_ATTR_IDENT_TYPE],
|
||||||
xp->ip.ident_type = nla_get_u8(
|
ILA_ATYPE_USE_FORMAT);
|
||||||
info->attrs[ILA_ATTR_IDENT_TYPE]);
|
|
||||||
else
|
|
||||||
xp->ip.ident_type = ILA_ATYPE_USE_FORMAT;
|
|
||||||
|
|
||||||
if (info->attrs[ILA_ATTR_IFINDEX])
|
if (info->attrs[ILA_ATTR_IFINDEX])
|
||||||
xp->ifindex = nla_get_s32(info->attrs[ILA_ATTR_IFINDEX]);
|
xp->ifindex = nla_get_s32(info->attrs[ILA_ATTR_IFINDEX]);
|
||||||
|
@ -135,15 +135,11 @@ static int ioam6_genl_addns(struct sk_buff *skb, struct genl_info *info)
|
|||||||
|
|
||||||
ns->id = id;
|
ns->id = id;
|
||||||
|
|
||||||
if (!info->attrs[IOAM6_ATTR_NS_DATA])
|
data32 = nla_get_u32_default(info->attrs[IOAM6_ATTR_NS_DATA],
|
||||||
data32 = IOAM6_U32_UNAVAILABLE;
|
IOAM6_U32_UNAVAILABLE);
|
||||||
else
|
|
||||||
data32 = nla_get_u32(info->attrs[IOAM6_ATTR_NS_DATA]);
|
|
||||||
|
|
||||||
if (!info->attrs[IOAM6_ATTR_NS_DATA_WIDE])
|
data64 = nla_get_u64_default(info->attrs[IOAM6_ATTR_NS_DATA_WIDE],
|
||||||
data64 = IOAM6_U64_UNAVAILABLE;
|
IOAM6_U64_UNAVAILABLE);
|
||||||
else
|
|
||||||
data64 = nla_get_u64(info->attrs[IOAM6_ATTR_NS_DATA_WIDE]);
|
|
||||||
|
|
||||||
ns->data = cpu_to_be32(data32);
|
ns->data = cpu_to_be32(data32);
|
||||||
ns->data_wide = cpu_to_be64(data64);
|
ns->data_wide = cpu_to_be64(data64);
|
||||||
|
@ -142,10 +142,8 @@ static int ioam6_build_state(struct net *net, struct nlattr *nla,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tb[IOAM6_IPTUNNEL_MODE])
|
mode = nla_get_u8_default(tb[IOAM6_IPTUNNEL_MODE],
|
||||||
mode = IOAM6_IPTUNNEL_MODE_INLINE;
|
IOAM6_IPTUNNEL_MODE_INLINE);
|
||||||
else
|
|
||||||
mode = nla_get_u8(tb[IOAM6_IPTUNNEL_MODE]);
|
|
||||||
|
|
||||||
if (tb[IOAM6_IPTUNNEL_SRC] && mode == IOAM6_IPTUNNEL_MODE_INLINE) {
|
if (tb[IOAM6_IPTUNNEL_SRC] && mode == IOAM6_IPTUNNEL_MODE_INLINE) {
|
||||||
NL_SET_ERR_MSG(extack, "no tunnel src expected with this mode");
|
NL_SET_ERR_MSG(extack, "no tunnel src expected with this mode");
|
||||||
|
@ -2560,7 +2560,7 @@ static int ip6mr_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
|
|||||||
src = nla_get_in6_addr(tb[RTA_SRC]);
|
src = nla_get_in6_addr(tb[RTA_SRC]);
|
||||||
if (tb[RTA_DST])
|
if (tb[RTA_DST])
|
||||||
grp = nla_get_in6_addr(tb[RTA_DST]);
|
grp = nla_get_in6_addr(tb[RTA_DST]);
|
||||||
tableid = tb[RTA_TABLE] ? nla_get_u32(tb[RTA_TABLE]) : 0;
|
tableid = nla_get_u32_default(tb[RTA_TABLE], 0);
|
||||||
|
|
||||||
mrt = ip6mr_get_table(net, tableid ?: RT_TABLE_DEFAULT);
|
mrt = ip6mr_get_table(net, tableid ?: RT_TABLE_DEFAULT);
|
||||||
if (!mrt) {
|
if (!mrt) {
|
||||||
|
@ -3662,10 +3662,7 @@ static int ip_vs_genl_parse_dest(struct ip_vs_dest_user_kern *udest,
|
|||||||
nla_memcpy(&udest->addr, nla_addr, sizeof(udest->addr));
|
nla_memcpy(&udest->addr, nla_addr, sizeof(udest->addr));
|
||||||
udest->port = nla_get_be16(nla_port);
|
udest->port = nla_get_be16(nla_port);
|
||||||
|
|
||||||
if (nla_addr_family)
|
udest->af = nla_get_u16_default(nla_addr_family, 0);
|
||||||
udest->af = nla_get_u16(nla_addr_family);
|
|
||||||
else
|
|
||||||
udest->af = 0;
|
|
||||||
|
|
||||||
/* If a full entry was requested, check for the additional fields */
|
/* If a full entry was requested, check for the additional fields */
|
||||||
if (full_entry) {
|
if (full_entry) {
|
||||||
|
@ -1090,10 +1090,8 @@ static int nf_nat_ipv4_nlattr_to_range(struct nlattr *tb[],
|
|||||||
range->flags |= NF_NAT_RANGE_MAP_IPS;
|
range->flags |= NF_NAT_RANGE_MAP_IPS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tb[CTA_NAT_V4_MAXIP])
|
range->max_addr.ip = nla_get_be32_default(tb[CTA_NAT_V4_MAXIP],
|
||||||
range->max_addr.ip = nla_get_be32(tb[CTA_NAT_V4_MAXIP]);
|
range->min_addr.ip);
|
||||||
else
|
|
||||||
range->max_addr.ip = range->min_addr.ip;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -497,10 +497,7 @@ static int nft_tunnel_obj_init(const struct nft_ctx *ctx,
|
|||||||
}
|
}
|
||||||
if (tb[NFTA_TUNNEL_KEY_TOS])
|
if (tb[NFTA_TUNNEL_KEY_TOS])
|
||||||
info.key.tos = nla_get_u8(tb[NFTA_TUNNEL_KEY_TOS]);
|
info.key.tos = nla_get_u8(tb[NFTA_TUNNEL_KEY_TOS]);
|
||||||
if (tb[NFTA_TUNNEL_KEY_TTL])
|
info.key.ttl = nla_get_u8_default(tb[NFTA_TUNNEL_KEY_TTL], U8_MAX);
|
||||||
info.key.ttl = nla_get_u8(tb[NFTA_TUNNEL_KEY_TTL]);
|
|
||||||
else
|
|
||||||
info.key.ttl = U8_MAX;
|
|
||||||
|
|
||||||
if (tb[NFTA_TUNNEL_KEY_OPTS]) {
|
if (tb[NFTA_TUNNEL_KEY_OPTS]) {
|
||||||
err = nft_tunnel_obj_opts_init(ctx, tb[NFTA_TUNNEL_KEY_OPTS],
|
err = nft_tunnel_obj_opts_init(ctx, tb[NFTA_TUNNEL_KEY_OPTS],
|
||||||
|
@ -107,11 +107,9 @@ static int netlbl_mgmt_add_common(struct genl_info *info,
|
|||||||
|
|
||||||
switch (entry->def.type) {
|
switch (entry->def.type) {
|
||||||
case NETLBL_NLTYPE_UNLABELED:
|
case NETLBL_NLTYPE_UNLABELED:
|
||||||
if (info->attrs[NLBL_MGMT_A_FAMILY])
|
entry->family =
|
||||||
entry->family =
|
nla_get_u16_default(info->attrs[NLBL_MGMT_A_FAMILY],
|
||||||
nla_get_u16(info->attrs[NLBL_MGMT_A_FAMILY]);
|
AF_UNSPEC);
|
||||||
else
|
|
||||||
entry->family = AF_UNSPEC;
|
|
||||||
break;
|
break;
|
||||||
case NETLBL_NLTYPE_CIPSOV4:
|
case NETLBL_NLTYPE_CIPSOV4:
|
||||||
if (!info->attrs[NLBL_MGMT_A_CV4DOI])
|
if (!info->attrs[NLBL_MGMT_A_CV4DOI])
|
||||||
@ -601,10 +599,7 @@ static int netlbl_mgmt_listdef(struct sk_buff *skb, struct genl_info *info)
|
|||||||
struct netlbl_dom_map *entry;
|
struct netlbl_dom_map *entry;
|
||||||
u16 family;
|
u16 family;
|
||||||
|
|
||||||
if (info->attrs[NLBL_MGMT_A_FAMILY])
|
family = nla_get_u16_default(info->attrs[NLBL_MGMT_A_FAMILY], AF_INET);
|
||||||
family = nla_get_u16(info->attrs[NLBL_MGMT_A_FAMILY]);
|
|
||||||
else
|
|
||||||
family = AF_INET;
|
|
||||||
|
|
||||||
ans_skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
|
ans_skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
|
||||||
if (ans_skb == NULL)
|
if (ans_skb == NULL)
|
||||||
|
@ -1828,8 +1828,7 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct genl_info *info)
|
|||||||
parms.dp = dp;
|
parms.dp = dp;
|
||||||
parms.port_no = OVSP_LOCAL;
|
parms.port_no = OVSP_LOCAL;
|
||||||
parms.upcall_portids = a[OVS_DP_ATTR_UPCALL_PID];
|
parms.upcall_portids = a[OVS_DP_ATTR_UPCALL_PID];
|
||||||
parms.desired_ifindex = a[OVS_DP_ATTR_IFINDEX]
|
parms.desired_ifindex = nla_get_s32_default(a[OVS_DP_ATTR_IFINDEX], 0);
|
||||||
? nla_get_s32(a[OVS_DP_ATTR_IFINDEX]) : 0;
|
|
||||||
|
|
||||||
/* So far only local changes have been made, now need the lock. */
|
/* So far only local changes have been made, now need the lock. */
|
||||||
ovs_lock();
|
ovs_lock();
|
||||||
@ -2266,8 +2265,7 @@ static int ovs_vport_cmd_new(struct sk_buff *skb, struct genl_info *info)
|
|||||||
if (a[OVS_VPORT_ATTR_IFINDEX] && parms.type != OVS_VPORT_TYPE_INTERNAL)
|
if (a[OVS_VPORT_ATTR_IFINDEX] && parms.type != OVS_VPORT_TYPE_INTERNAL)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
port_no = a[OVS_VPORT_ATTR_PORT_NO]
|
port_no = nla_get_u32_default(a[OVS_VPORT_ATTR_PORT_NO], 0);
|
||||||
? nla_get_u32(a[OVS_VPORT_ATTR_PORT_NO]) : 0;
|
|
||||||
if (port_no >= DP_MAX_PORTS)
|
if (port_no >= DP_MAX_PORTS)
|
||||||
return -EFBIG;
|
return -EFBIG;
|
||||||
|
|
||||||
@ -2304,8 +2302,8 @@ restart:
|
|||||||
parms.dp = dp;
|
parms.dp = dp;
|
||||||
parms.port_no = port_no;
|
parms.port_no = port_no;
|
||||||
parms.upcall_portids = a[OVS_VPORT_ATTR_UPCALL_PID];
|
parms.upcall_portids = a[OVS_VPORT_ATTR_UPCALL_PID];
|
||||||
parms.desired_ifindex = a[OVS_VPORT_ATTR_IFINDEX]
|
parms.desired_ifindex = nla_get_s32_default(a[OVS_VPORT_ATTR_IFINDEX],
|
||||||
? nla_get_s32(a[OVS_VPORT_ATTR_IFINDEX]) : 0;
|
0);
|
||||||
|
|
||||||
vport = new_vport(&parms);
|
vport = new_vport(&parms);
|
||||||
err = PTR_ERR(vport);
|
err = PTR_ERR(vport);
|
||||||
|
@ -1938,7 +1938,7 @@ int ovs_nla_get_identifier(struct sw_flow_id *sfid, const struct nlattr *ufid,
|
|||||||
|
|
||||||
u32 ovs_nla_get_ufid_flags(const struct nlattr *attr)
|
u32 ovs_nla_get_ufid_flags(const struct nlattr *attr)
|
||||||
{
|
{
|
||||||
return attr ? nla_get_u32(attr) : 0;
|
return nla_get_u32_default(attr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1183,9 +1183,8 @@ static int tcf_ct_fill_params_nat(struct tcf_ct_params *p,
|
|||||||
range->min_addr.ip =
|
range->min_addr.ip =
|
||||||
nla_get_in_addr(tb[TCA_CT_NAT_IPV4_MIN]);
|
nla_get_in_addr(tb[TCA_CT_NAT_IPV4_MIN]);
|
||||||
|
|
||||||
range->max_addr.ip = max_attr ?
|
range->max_addr.ip =
|
||||||
nla_get_in_addr(max_attr) :
|
nla_get_in_addr_default(max_attr, range->min_addr.ip);
|
||||||
range->min_addr.ip;
|
|
||||||
} else if (tb[TCA_CT_NAT_IPV6_MIN]) {
|
} else if (tb[TCA_CT_NAT_IPV6_MIN]) {
|
||||||
struct nlattr *max_attr = tb[TCA_CT_NAT_IPV6_MAX];
|
struct nlattr *max_attr = tb[TCA_CT_NAT_IPV6_MAX];
|
||||||
|
|
||||||
@ -1314,8 +1313,9 @@ static int tcf_ct_fill_params(struct net *net,
|
|||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
family = tb[TCA_CT_HELPER_FAMILY] ? nla_get_u8(tb[TCA_CT_HELPER_FAMILY]) : AF_INET;
|
family = nla_get_u8_default(tb[TCA_CT_HELPER_FAMILY], AF_INET);
|
||||||
proto = tb[TCA_CT_HELPER_PROTO] ? nla_get_u8(tb[TCA_CT_HELPER_PROTO]) : IPPROTO_TCP;
|
proto = nla_get_u8_default(tb[TCA_CT_HELPER_PROTO],
|
||||||
|
IPPROTO_TCP);
|
||||||
err = nf_ct_add_helper(tmpl, name, family, proto,
|
err = nf_ct_add_helper(tmpl, name, family, proto,
|
||||||
p->ct_action & TCA_CT_ACT_NAT, &p->helper);
|
p->ct_action & TCA_CT_ACT_NAT, &p->helper);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -197,8 +197,9 @@ static int tcf_ctinfo_init(struct net *net, struct nlattr *nla,
|
|||||||
"dscp mask must be 6 contiguous bits");
|
"dscp mask must be 6 contiguous bits");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
dscpstatemask = tb[TCA_CTINFO_PARMS_DSCP_STATEMASK] ?
|
dscpstatemask =
|
||||||
nla_get_u32(tb[TCA_CTINFO_PARMS_DSCP_STATEMASK]) : 0;
|
nla_get_u32_default(tb[TCA_CTINFO_PARMS_DSCP_STATEMASK],
|
||||||
|
0);
|
||||||
/* mask & statemask must not overlap */
|
/* mask & statemask must not overlap */
|
||||||
if (dscpmask & dscpstatemask) {
|
if (dscpmask & dscpstatemask) {
|
||||||
NL_SET_ERR_MSG_ATTR(extack,
|
NL_SET_ERR_MSG_ATTR(extack,
|
||||||
@ -243,8 +244,7 @@ static int tcf_ctinfo_init(struct net *net, struct nlattr *nla,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cp_new->net = net;
|
cp_new->net = net;
|
||||||
cp_new->zone = tb[TCA_CTINFO_ZONE] ?
|
cp_new->zone = nla_get_u16_default(tb[TCA_CTINFO_ZONE], 0);
|
||||||
nla_get_u16(tb[TCA_CTINFO_ZONE]) : 0;
|
|
||||||
if (dscpmask) {
|
if (dscpmask) {
|
||||||
cp_new->dscpmask = dscpmask;
|
cp_new->dscpmask = dscpmask;
|
||||||
cp_new->dscpmaskshift = dscpmaskshift;
|
cp_new->dscpmaskshift = dscpmaskshift;
|
||||||
|
@ -190,15 +190,10 @@ static int fill_gate_entry(struct nlattr **tb, struct tcfg_gate_entry *entry,
|
|||||||
|
|
||||||
entry->interval = interval;
|
entry->interval = interval;
|
||||||
|
|
||||||
if (tb[TCA_GATE_ENTRY_IPV])
|
entry->ipv = nla_get_s32_default(tb[TCA_GATE_ENTRY_IPV], -1);
|
||||||
entry->ipv = nla_get_s32(tb[TCA_GATE_ENTRY_IPV]);
|
|
||||||
else
|
|
||||||
entry->ipv = -1;
|
|
||||||
|
|
||||||
if (tb[TCA_GATE_ENTRY_MAX_OCTETS])
|
entry->maxoctets = nla_get_s32_default(tb[TCA_GATE_ENTRY_MAX_OCTETS],
|
||||||
entry->maxoctets = nla_get_s32(tb[TCA_GATE_ENTRY_MAX_OCTETS]);
|
-1);
|
||||||
else
|
|
||||||
entry->maxoctets = -1;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -288,16 +288,14 @@ static int tcf_mpls_init(struct net *net, struct nlattr *nla,
|
|||||||
}
|
}
|
||||||
|
|
||||||
p->tcfm_action = parm->m_action;
|
p->tcfm_action = parm->m_action;
|
||||||
p->tcfm_label = tb[TCA_MPLS_LABEL] ? nla_get_u32(tb[TCA_MPLS_LABEL]) :
|
p->tcfm_label = nla_get_u32_default(tb[TCA_MPLS_LABEL],
|
||||||
ACT_MPLS_LABEL_NOT_SET;
|
ACT_MPLS_LABEL_NOT_SET);
|
||||||
p->tcfm_tc = tb[TCA_MPLS_TC] ? nla_get_u8(tb[TCA_MPLS_TC]) :
|
p->tcfm_tc = nla_get_u8_default(tb[TCA_MPLS_TC], ACT_MPLS_TC_NOT_SET);
|
||||||
ACT_MPLS_TC_NOT_SET;
|
p->tcfm_ttl = nla_get_u8_default(tb[TCA_MPLS_TTL], mpls_ttl);
|
||||||
p->tcfm_ttl = tb[TCA_MPLS_TTL] ? nla_get_u8(tb[TCA_MPLS_TTL]) :
|
p->tcfm_bos = nla_get_u8_default(tb[TCA_MPLS_BOS],
|
||||||
mpls_ttl;
|
ACT_MPLS_BOS_NOT_SET);
|
||||||
p->tcfm_bos = tb[TCA_MPLS_BOS] ? nla_get_u8(tb[TCA_MPLS_BOS]) :
|
p->tcfm_proto = nla_get_be16_default(tb[TCA_MPLS_PROTO],
|
||||||
ACT_MPLS_BOS_NOT_SET;
|
htons(ETH_P_MPLS_UC));
|
||||||
p->tcfm_proto = tb[TCA_MPLS_PROTO] ? nla_get_be16(tb[TCA_MPLS_PROTO]) :
|
|
||||||
htons(ETH_P_MPLS_UC);
|
|
||||||
|
|
||||||
spin_lock_bh(&m->tcf_lock);
|
spin_lock_bh(&m->tcf_lock);
|
||||||
goto_ch = tcf_action_set_ctrlact(*a, parm->action, goto_ch);
|
goto_ch = tcf_action_set_ctrlact(*a, parm->action, goto_ch);
|
||||||
|
@ -167,8 +167,7 @@ static int tcf_police_init(struct net *net, struct nlattr *nla,
|
|||||||
}
|
}
|
||||||
if (R_tab) {
|
if (R_tab) {
|
||||||
new->rate_present = true;
|
new->rate_present = true;
|
||||||
rate64 = tb[TCA_POLICE_RATE64] ?
|
rate64 = nla_get_u64_default(tb[TCA_POLICE_RATE64], 0);
|
||||||
nla_get_u64(tb[TCA_POLICE_RATE64]) : 0;
|
|
||||||
psched_ratecfg_precompute(&new->rate, &R_tab->rate, rate64);
|
psched_ratecfg_precompute(&new->rate, &R_tab->rate, rate64);
|
||||||
qdisc_put_rtab(R_tab);
|
qdisc_put_rtab(R_tab);
|
||||||
} else {
|
} else {
|
||||||
@ -176,8 +175,7 @@ static int tcf_police_init(struct net *net, struct nlattr *nla,
|
|||||||
}
|
}
|
||||||
if (P_tab) {
|
if (P_tab) {
|
||||||
new->peak_present = true;
|
new->peak_present = true;
|
||||||
prate64 = tb[TCA_POLICE_PEAKRATE64] ?
|
prate64 = nla_get_u64_default(tb[TCA_POLICE_PEAKRATE64], 0);
|
||||||
nla_get_u64(tb[TCA_POLICE_PEAKRATE64]) : 0;
|
|
||||||
psched_ratecfg_precompute(&new->peak, &P_tab->rate, prate64);
|
psched_ratecfg_precompute(&new->peak, &P_tab->rate, prate64);
|
||||||
qdisc_put_rtab(P_tab);
|
qdisc_put_rtab(P_tab);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2297,7 +2297,7 @@ replay:
|
|||||||
}
|
}
|
||||||
block->classid = parent;
|
block->classid = parent;
|
||||||
|
|
||||||
chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
|
chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
|
||||||
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
||||||
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
@ -2509,7 +2509,7 @@ static int tc_del_tfilter(struct sk_buff *skb, struct nlmsghdr *n,
|
|||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
|
chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
|
||||||
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
||||||
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
@ -2664,7 +2664,7 @@ static int tc_get_tfilter(struct sk_buff *skb, struct nlmsghdr *n,
|
|||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
|
chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
|
||||||
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
||||||
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
@ -3104,7 +3104,7 @@ replay:
|
|||||||
if (IS_ERR(block))
|
if (IS_ERR(block))
|
||||||
return PTR_ERR(block);
|
return PTR_ERR(block);
|
||||||
|
|
||||||
chain_index = tca[TCA_CHAIN] ? nla_get_u32(tca[TCA_CHAIN]) : 0;
|
chain_index = nla_get_u32_default(tca[TCA_CHAIN], 0);
|
||||||
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
if (chain_index > TC_ACT_EXT_VAL_MASK) {
|
||||||
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
NL_SET_ERR_MSG(extack, "Specified chain index exceeds upper limit");
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
|
@ -356,7 +356,7 @@ static int choke_change(struct Qdisc *sch, struct nlattr *opt,
|
|||||||
tb[TCA_CHOKE_STAB] == NULL)
|
tb[TCA_CHOKE_STAB] == NULL)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
max_P = tb[TCA_CHOKE_MAX_P] ? nla_get_u32(tb[TCA_CHOKE_MAX_P]) : 0;
|
max_P = nla_get_u32_default(tb[TCA_CHOKE_MAX_P], 0);
|
||||||
|
|
||||||
ctl = nla_data(tb[TCA_CHOKE_PARMS]);
|
ctl = nla_data(tb[TCA_CHOKE_PARMS]);
|
||||||
stab = nla_data(tb[TCA_CHOKE_STAB]);
|
stab = nla_data(tb[TCA_CHOKE_STAB]);
|
||||||
|
@ -668,7 +668,7 @@ static int gred_change(struct Qdisc *sch, struct nlattr *opt,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
max_P = tb[TCA_GRED_MAX_P] ? nla_get_u32(tb[TCA_GRED_MAX_P]) : 0;
|
max_P = nla_get_u32_default(tb[TCA_GRED_MAX_P], 0);
|
||||||
|
|
||||||
ctl = nla_data(tb[TCA_GRED_PARMS]);
|
ctl = nla_data(tb[TCA_GRED_PARMS]);
|
||||||
stab = nla_data(tb[TCA_GRED_STAB]);
|
stab = nla_data(tb[TCA_GRED_STAB]);
|
||||||
|
@ -1810,8 +1810,8 @@ static int htb_change_class(struct Qdisc *sch, u32 classid,
|
|||||||
qdisc_put_rtab(qdisc_get_rtab(&hopt->ceil, tb[TCA_HTB_CTAB],
|
qdisc_put_rtab(qdisc_get_rtab(&hopt->ceil, tb[TCA_HTB_CTAB],
|
||||||
NULL));
|
NULL));
|
||||||
|
|
||||||
rate64 = tb[TCA_HTB_RATE64] ? nla_get_u64(tb[TCA_HTB_RATE64]) : 0;
|
rate64 = nla_get_u64_default(tb[TCA_HTB_RATE64], 0);
|
||||||
ceil64 = tb[TCA_HTB_CEIL64] ? nla_get_u64(tb[TCA_HTB_CEIL64]) : 0;
|
ceil64 = nla_get_u64_default(tb[TCA_HTB_CEIL64], 0);
|
||||||
|
|
||||||
if (!cl) { /* new class */
|
if (!cl) { /* new class */
|
||||||
struct net_device *dev = qdisc_dev(sch);
|
struct net_device *dev = qdisc_dev(sch);
|
||||||
|
@ -421,10 +421,7 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
|
|||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (tb[TCA_QFQ_WEIGHT])
|
weight = nla_get_u32_default(tb[TCA_QFQ_WEIGHT], 1);
|
||||||
weight = nla_get_u32(tb[TCA_QFQ_WEIGHT]);
|
|
||||||
else
|
|
||||||
weight = 1;
|
|
||||||
|
|
||||||
if (tb[TCA_QFQ_LMAX]) {
|
if (tb[TCA_QFQ_LMAX]) {
|
||||||
lmax = nla_get_u32(tb[TCA_QFQ_LMAX]);
|
lmax = nla_get_u32(tb[TCA_QFQ_LMAX]);
|
||||||
|
@ -248,7 +248,7 @@ static int __red_change(struct Qdisc *sch, struct nlattr **tb,
|
|||||||
tb[TCA_RED_STAB] == NULL)
|
tb[TCA_RED_STAB] == NULL)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
max_P = tb[TCA_RED_MAX_P] ? nla_get_u32(tb[TCA_RED_MAX_P]) : 0;
|
max_P = nla_get_u32_default(tb[TCA_RED_MAX_P], 0);
|
||||||
|
|
||||||
ctl = nla_data(tb[TCA_RED_PARMS]);
|
ctl = nla_data(tb[TCA_RED_PARMS]);
|
||||||
stab = nla_data(tb[TCA_RED_STAB]);
|
stab = nla_data(tb[TCA_RED_STAB]);
|
||||||
|
@ -1828,7 +1828,7 @@ static int taprio_change(struct Qdisc *sch, struct nlattr *opt,
|
|||||||
* zero; (2) the 'flags' of a "running" taprio instance cannot be
|
* zero; (2) the 'flags' of a "running" taprio instance cannot be
|
||||||
* changed.
|
* changed.
|
||||||
*/
|
*/
|
||||||
taprio_flags = tb[TCA_TAPRIO_ATTR_FLAGS] ? nla_get_u32(tb[TCA_TAPRIO_ATTR_FLAGS]) : 0;
|
taprio_flags = nla_get_u32_default(tb[TCA_TAPRIO_ATTR_FLAGS], 0);
|
||||||
|
|
||||||
/* txtime-assist and full offload are mutually exclusive */
|
/* txtime-assist and full offload are mutually exclusive */
|
||||||
if ((taprio_flags & TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST) &&
|
if ((taprio_flags & TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST) &&
|
||||||
|
@ -1286,10 +1286,7 @@ static unsigned int nl80211_link_id(struct nlattr **attrs)
|
|||||||
{
|
{
|
||||||
struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID];
|
struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID];
|
||||||
|
|
||||||
if (!linkid)
|
return nla_get_u8_default(linkid, 0);
|
||||||
return 0;
|
|
||||||
|
|
||||||
return nla_get_u8(linkid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int nl80211_link_id_or_invalid(struct nlattr **attrs)
|
static int nl80211_link_id_or_invalid(struct nlattr **attrs)
|
||||||
@ -3414,11 +3411,9 @@ static int _nl80211_parse_chandef(struct cfg80211_registered_device *rdev,
|
|||||||
if (attrs[NL80211_ATTR_CENTER_FREQ1]) {
|
if (attrs[NL80211_ATTR_CENTER_FREQ1]) {
|
||||||
chandef->center_freq1 =
|
chandef->center_freq1 =
|
||||||
nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]);
|
nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]);
|
||||||
if (attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET])
|
chandef->freq1_offset =
|
||||||
chandef->freq1_offset = nla_get_u32(
|
nla_get_u32_default(attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET],
|
||||||
attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]);
|
0);
|
||||||
else
|
|
||||||
chandef->freq1_offset = 0;
|
|
||||||
}
|
}
|
||||||
if (attrs[NL80211_ATTR_CENTER_FREQ2])
|
if (attrs[NL80211_ATTR_CENTER_FREQ2])
|
||||||
chandef->center_freq2 =
|
chandef->center_freq2 =
|
||||||
@ -8265,11 +8260,9 @@ static int nl80211_req_set_reg(struct sk_buff *skb, struct genl_info *info)
|
|||||||
if (unlikely(!rcu_access_pointer(cfg80211_regdomain)))
|
if (unlikely(!rcu_access_pointer(cfg80211_regdomain)))
|
||||||
return -EINPROGRESS;
|
return -EINPROGRESS;
|
||||||
|
|
||||||
if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE])
|
user_reg_hint_type =
|
||||||
user_reg_hint_type =
|
nla_get_u32_default(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE],
|
||||||
nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]);
|
NL80211_USER_REG_HINT_USER);
|
||||||
else
|
|
||||||
user_reg_hint_type = NL80211_USER_REG_HINT_USER;
|
|
||||||
|
|
||||||
switch (user_reg_hint_type) {
|
switch (user_reg_hint_type) {
|
||||||
case NL80211_USER_REG_HINT_USER:
|
case NL80211_USER_REG_HINT_USER:
|
||||||
@ -11087,11 +11080,9 @@ static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev,
|
|||||||
nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]);
|
nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->attrs[NL80211_ATTR_SAE_PWE])
|
settings->sae_pwe =
|
||||||
settings->sae_pwe =
|
nla_get_u8_default(info->attrs[NL80211_ATTR_SAE_PWE],
|
||||||
nla_get_u8(info->attrs[NL80211_ATTR_SAE_PWE]);
|
NL80211_SAE_PWE_UNSPECIFIED);
|
||||||
else
|
|
||||||
settings->sae_pwe = NL80211_SAE_PWE_UNSPECIFIED;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -12347,10 +12338,8 @@ static int nl80211_disconnect(struct sk_buff *skb, struct genl_info *info)
|
|||||||
dev->ieee80211_ptr->conn_owner_nlportid != info->snd_portid)
|
dev->ieee80211_ptr->conn_owner_nlportid != info->snd_portid)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
if (!info->attrs[NL80211_ATTR_REASON_CODE])
|
reason = nla_get_u16_default(info->attrs[NL80211_ATTR_REASON_CODE],
|
||||||
reason = WLAN_REASON_DEAUTH_LEAVING;
|
WLAN_REASON_DEAUTH_LEAVING);
|
||||||
else
|
|
||||||
reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]);
|
|
||||||
|
|
||||||
if (reason == 0)
|
if (reason == 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -13696,10 +13685,7 @@ static int nl80211_parse_wowlan_tcp(struct cfg80211_registered_device *rdev,
|
|||||||
cfg->dst = nla_get_in_addr(tb[NL80211_WOWLAN_TCP_DST_IPV4]);
|
cfg->dst = nla_get_in_addr(tb[NL80211_WOWLAN_TCP_DST_IPV4]);
|
||||||
memcpy(cfg->dst_mac, nla_data(tb[NL80211_WOWLAN_TCP_DST_MAC]),
|
memcpy(cfg->dst_mac, nla_data(tb[NL80211_WOWLAN_TCP_DST_MAC]),
|
||||||
ETH_ALEN);
|
ETH_ALEN);
|
||||||
if (tb[NL80211_WOWLAN_TCP_SRC_PORT])
|
port = nla_get_u16_default(tb[NL80211_WOWLAN_TCP_SRC_PORT], 0);
|
||||||
port = nla_get_u16(tb[NL80211_WOWLAN_TCP_SRC_PORT]);
|
|
||||||
else
|
|
||||||
port = 0;
|
|
||||||
#ifdef CONFIG_INET
|
#ifdef CONFIG_INET
|
||||||
/* allocate a socket and port for it and use it */
|
/* allocate a socket and port for it and use it */
|
||||||
err = __sock_create(wiphy_net(&rdev->wiphy), PF_INET, SOCK_STREAM,
|
err = __sock_create(wiphy_net(&rdev->wiphy), PF_INET, SOCK_STREAM,
|
||||||
@ -13910,11 +13896,9 @@ static int nl80211_set_wowlan(struct sk_buff *skb, struct genl_info *info)
|
|||||||
pat_len < wowlan->pattern_min_len)
|
pat_len < wowlan->pattern_min_len)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!pat_tb[NL80211_PKTPAT_OFFSET])
|
pkt_offset =
|
||||||
pkt_offset = 0;
|
nla_get_u32_default(pat_tb[NL80211_PKTPAT_OFFSET],
|
||||||
else
|
0);
|
||||||
pkt_offset = nla_get_u32(
|
|
||||||
pat_tb[NL80211_PKTPAT_OFFSET]);
|
|
||||||
if (pkt_offset > wowlan->max_pkt_offset)
|
if (pkt_offset > wowlan->max_pkt_offset)
|
||||||
goto error;
|
goto error;
|
||||||
new_triggers.patterns[i].pkt_offset = pkt_offset;
|
new_triggers.patterns[i].pkt_offset = pkt_offset;
|
||||||
@ -14158,10 +14142,8 @@ static int nl80211_parse_coalesce_rule(struct cfg80211_registered_device *rdev,
|
|||||||
pat_len < coalesce->pattern_min_len)
|
pat_len < coalesce->pattern_min_len)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!pat_tb[NL80211_PKTPAT_OFFSET])
|
pkt_offset = nla_get_u32_default(pat_tb[NL80211_PKTPAT_OFFSET],
|
||||||
pkt_offset = 0;
|
0);
|
||||||
else
|
|
||||||
pkt_offset = nla_get_u32(pat_tb[NL80211_PKTPAT_OFFSET]);
|
|
||||||
if (pkt_offset > coalesce->max_pkt_offset)
|
if (pkt_offset > coalesce->max_pkt_offset)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
new_rule->patterns[i].pkt_offset = pkt_offset;
|
new_rule->patterns[i].pkt_offset = pkt_offset;
|
||||||
|
@ -200,7 +200,7 @@ static int verify_newsa_info(struct xfrm_usersa_info *p,
|
|||||||
struct netlink_ext_ack *extack)
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
u8 sa_dir = attrs[XFRMA_SA_DIR] ? nla_get_u8(attrs[XFRMA_SA_DIR]) : 0;
|
u8 sa_dir = nla_get_u8_default(attrs[XFRMA_SA_DIR], 0);
|
||||||
u16 family = p->sel.family;
|
u16 family = p->sel.family;
|
||||||
|
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
@ -767,10 +767,8 @@ static void xfrm_smark_init(struct nlattr **attrs, struct xfrm_mark *m)
|
|||||||
{
|
{
|
||||||
if (attrs[XFRMA_SET_MARK]) {
|
if (attrs[XFRMA_SET_MARK]) {
|
||||||
m->v = nla_get_u32(attrs[XFRMA_SET_MARK]);
|
m->v = nla_get_u32(attrs[XFRMA_SET_MARK]);
|
||||||
if (attrs[XFRMA_SET_MARK_MASK])
|
m->m = nla_get_u32_default(attrs[XFRMA_SET_MARK_MASK],
|
||||||
m->m = nla_get_u32(attrs[XFRMA_SET_MARK_MASK]);
|
0xffffffff);
|
||||||
else
|
|
||||||
m->m = 0xffffffff;
|
|
||||||
} else {
|
} else {
|
||||||
m->v = m->m = 0;
|
m->v = m->m = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user