netlink: implement nla_put_in_addr and nla_put_in6_addr
IP addresses are often stored in netlink attributes. Add generic functions to do that. For nla_put_in_addr, it would be nicer to pass struct in_addr but this is not used universally throughout the kernel, in way too many places __be32 is used to store IPv4 address. Signed-off-by: Jiri Benc <jbenc@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
15e318bdc6
commit
930345ea63
@@ -1117,34 +1117,30 @@ static int netlbl_unlabel_staticlist_gen(u32 cmd,
|
||||
struct in_addr addr_struct;
|
||||
|
||||
addr_struct.s_addr = addr4->list.addr;
|
||||
ret_val = nla_put(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV4ADDR,
|
||||
sizeof(struct in_addr),
|
||||
&addr_struct);
|
||||
ret_val = nla_put_in_addr(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV4ADDR,
|
||||
addr_struct.s_addr);
|
||||
if (ret_val != 0)
|
||||
goto list_cb_failure;
|
||||
|
||||
addr_struct.s_addr = addr4->list.mask;
|
||||
ret_val = nla_put(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV4MASK,
|
||||
sizeof(struct in_addr),
|
||||
&addr_struct);
|
||||
ret_val = nla_put_in_addr(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV4MASK,
|
||||
addr_struct.s_addr);
|
||||
if (ret_val != 0)
|
||||
goto list_cb_failure;
|
||||
|
||||
secid = addr4->secid;
|
||||
} else {
|
||||
ret_val = nla_put(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV6ADDR,
|
||||
sizeof(struct in6_addr),
|
||||
&addr6->list.addr);
|
||||
ret_val = nla_put_in6_addr(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV6ADDR,
|
||||
&addr6->list.addr);
|
||||
if (ret_val != 0)
|
||||
goto list_cb_failure;
|
||||
|
||||
ret_val = nla_put(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV6MASK,
|
||||
sizeof(struct in6_addr),
|
||||
&addr6->list.mask);
|
||||
ret_val = nla_put_in6_addr(cb_arg->skb,
|
||||
NLBL_UNLABEL_A_IPV6MASK,
|
||||
&addr6->list.mask);
|
||||
if (ret_val != 0)
|
||||
goto list_cb_failure;
|
||||
|
||||
|
Reference in New Issue
Block a user