net-next: replace obsolete NLMSG_* with type safe nlmsg_*
Signed-off-by: Hong Zhiguo <honkiko@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e5c5d22e8d
commit
573ce260b3
18 changed files with 48 additions and 50 deletions
|
@ -35,7 +35,7 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
#include <linux/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/netfilter/x_tables.h>
|
#include <linux/netfilter/x_tables.h>
|
||||||
#include <linux/netfilter_bridge/ebtables.h>
|
#include <linux/netfilter_bridge/ebtables.h>
|
||||||
|
@ -134,7 +134,7 @@ static void ebt_ulog_packet(unsigned int hooknr, const struct sk_buff *skb,
|
||||||
else
|
else
|
||||||
copy_len = uloginfo->cprange;
|
copy_len = uloginfo->cprange;
|
||||||
|
|
||||||
size = NLMSG_SPACE(sizeof(*pm) + copy_len);
|
size = nlmsg_total_size(sizeof(*pm) + copy_len);
|
||||||
if (size > nlbufsiz) {
|
if (size > nlbufsiz) {
|
||||||
pr_debug("Size %Zd needed, but nlbufsiz=%d\n", size, nlbufsiz);
|
pr_debug("Size %Zd needed, but nlbufsiz=%d\n", size, nlbufsiz);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -2613,10 +2613,10 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
|
||||||
type -= RTM_BASE;
|
type -= RTM_BASE;
|
||||||
|
|
||||||
/* All the messages must have at least 1 byte length */
|
/* All the messages must have at least 1 byte length */
|
||||||
if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(struct rtgenmsg)))
|
if (nlmsg_len(nlh) < sizeof(struct rtgenmsg))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
family = ((struct rtgenmsg *)NLMSG_DATA(nlh))->rtgen_family;
|
family = ((struct rtgenmsg *)nlmsg_data(nlh))->rtgen_family;
|
||||||
sz_idx = type>>2;
|
sz_idx = type>>2;
|
||||||
kind = type&3;
|
kind = type&3;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include <linux/sockios.h>
|
#include <linux/sockios.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
|
@ -492,7 +492,7 @@ int dn_fib_dump(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
if (!net_eq(net, &init_net))
|
if (!net_eq(net, &init_net))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (NLMSG_PAYLOAD(cb->nlh, 0) >= sizeof(struct rtmsg) &&
|
if (nlmsg_len(cb->nlh) >= sizeof(struct rtmsg) &&
|
||||||
((struct rtmsg *)nlmsg_data(cb->nlh))->rtm_flags&RTM_F_CLONED)
|
((struct rtmsg *)nlmsg_data(cb->nlh))->rtm_flags&RTM_F_CLONED)
|
||||||
return dn_cache_dump(skb, cb);
|
return dn_cache_dump(skb, cb);
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <linux/netfilter_decnet.h>
|
#include <linux/netfilter_decnet.h>
|
||||||
|
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
@ -39,21 +39,21 @@ static struct sk_buff *dnrmg_build_message(struct sk_buff *rt_skb, int *errp)
|
||||||
unsigned char *ptr;
|
unsigned char *ptr;
|
||||||
struct nf_dn_rtmsg *rtm;
|
struct nf_dn_rtmsg *rtm;
|
||||||
|
|
||||||
size = NLMSG_SPACE(rt_skb->len);
|
size = NLMSG_ALIGN(rt_skb->len) +
|
||||||
size += NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg));
|
NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg));
|
||||||
skb = alloc_skb(size, GFP_ATOMIC);
|
skb = nlmsg_new(size, GFP_ATOMIC);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
*errp = -ENOMEM;
|
*errp = -ENOMEM;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
old_tail = skb->tail;
|
old_tail = skb->tail;
|
||||||
nlh = nlmsg_put(skb, 0, 0, 0, size - sizeof(*nlh), 0);
|
nlh = nlmsg_put(skb, 0, 0, 0, size, 0);
|
||||||
if (!nlh) {
|
if (!nlh) {
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
*errp = -ENOMEM;
|
*errp = -ENOMEM;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
rtm = (struct nf_dn_rtmsg *)NLMSG_DATA(nlh);
|
rtm = (struct nf_dn_rtmsg *)nlmsg_data(nlh);
|
||||||
rtm->nfdn_ifindex = rt_skb->dev->ifindex;
|
rtm->nfdn_ifindex = rt_skb->dev->ifindex;
|
||||||
ptr = NFDN_RTMSG(rtm);
|
ptr = NFDN_RTMSG(rtm);
|
||||||
skb_copy_from_linear_data(rt_skb, ptr, rt_skb->len);
|
skb_copy_from_linear_data(rt_skb, ptr, rt_skb->len);
|
||||||
|
|
|
@ -65,7 +65,7 @@ struct sk_buff *ieee802154_nl_create(int flags, u8 req)
|
||||||
int ieee802154_nl_mcast(struct sk_buff *msg, unsigned int group)
|
int ieee802154_nl_mcast(struct sk_buff *msg, unsigned int group)
|
||||||
{
|
{
|
||||||
/* XXX: nlh is right at the start of msg */
|
/* XXX: nlh is right at the start of msg */
|
||||||
void *hdr = genlmsg_data(NLMSG_DATA(msg->data));
|
void *hdr = genlmsg_data(nlmsg_data(msg->data));
|
||||||
|
|
||||||
if (genlmsg_end(msg, hdr) < 0)
|
if (genlmsg_end(msg, hdr) < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -98,7 +98,7 @@ struct sk_buff *ieee802154_nl_new_reply(struct genl_info *info,
|
||||||
int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info)
|
int ieee802154_nl_reply(struct sk_buff *msg, struct genl_info *info)
|
||||||
{
|
{
|
||||||
/* XXX: nlh is right at the start of msg */
|
/* XXX: nlh is right at the start of msg */
|
||||||
void *hdr = genlmsg_data(NLMSG_DATA(msg->data));
|
void *hdr = genlmsg_data(nlmsg_data(msg->data));
|
||||||
|
|
||||||
if (genlmsg_end(msg, hdr) < 0)
|
if (genlmsg_end(msg, hdr) < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
@ -957,8 +957,8 @@ static void nl_fib_input(struct sk_buff *skb)
|
||||||
|
|
||||||
net = sock_net(skb->sk);
|
net = sock_net(skb->sk);
|
||||||
nlh = nlmsg_hdr(skb);
|
nlh = nlmsg_hdr(skb);
|
||||||
if (skb->len < NLMSG_SPACE(0) || skb->len < nlh->nlmsg_len ||
|
if (skb->len < NLMSG_HDRLEN || skb->len < nlh->nlmsg_len ||
|
||||||
nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*frn)))
|
nlmsg_len(nlh) < sizeof(*frn))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
skb = skb_clone(skb, GFP_KERNEL);
|
skb = skb_clone(skb, GFP_KERNEL);
|
||||||
|
@ -966,7 +966,7 @@ static void nl_fib_input(struct sk_buff *skb)
|
||||||
return;
|
return;
|
||||||
nlh = nlmsg_hdr(skb);
|
nlh = nlmsg_hdr(skb);
|
||||||
|
|
||||||
frn = (struct fib_result_nl *) NLMSG_DATA(nlh);
|
frn = (struct fib_result_nl *) nlmsg_data(nlh);
|
||||||
tb = fib_get_table(net, frn->tb_id_in);
|
tb = fib_get_table(net, frn->tb_id_in);
|
||||||
|
|
||||||
nl_fib_lookup(frn, tb);
|
nl_fib_lookup(frn, tb);
|
||||||
|
|
|
@ -626,9 +626,9 @@ static void ipmr_destroy_unres(struct mr_table *mrt, struct mfc_cache *c)
|
||||||
if (ip_hdr(skb)->version == 0) {
|
if (ip_hdr(skb)->version == 0) {
|
||||||
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct iphdr));
|
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct iphdr));
|
||||||
nlh->nlmsg_type = NLMSG_ERROR;
|
nlh->nlmsg_type = NLMSG_ERROR;
|
||||||
nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr));
|
nlh->nlmsg_len = nlmsg_msg_size(sizeof(struct nlmsgerr));
|
||||||
skb_trim(skb, nlh->nlmsg_len);
|
skb_trim(skb, nlh->nlmsg_len);
|
||||||
e = NLMSG_DATA(nlh);
|
e = nlmsg_data(nlh);
|
||||||
e->error = -ETIMEDOUT;
|
e->error = -ETIMEDOUT;
|
||||||
memset(&e->msg, 0, sizeof(e->msg));
|
memset(&e->msg, 0, sizeof(e->msg));
|
||||||
|
|
||||||
|
@ -910,14 +910,14 @@ static void ipmr_cache_resolve(struct net *net, struct mr_table *mrt,
|
||||||
if (ip_hdr(skb)->version == 0) {
|
if (ip_hdr(skb)->version == 0) {
|
||||||
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct iphdr));
|
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct iphdr));
|
||||||
|
|
||||||
if (__ipmr_fill_mroute(mrt, skb, c, NLMSG_DATA(nlh)) > 0) {
|
if (__ipmr_fill_mroute(mrt, skb, c, nlmsg_data(nlh)) > 0) {
|
||||||
nlh->nlmsg_len = skb_tail_pointer(skb) -
|
nlh->nlmsg_len = skb_tail_pointer(skb) -
|
||||||
(u8 *)nlh;
|
(u8 *)nlh;
|
||||||
} else {
|
} else {
|
||||||
nlh->nlmsg_type = NLMSG_ERROR;
|
nlh->nlmsg_type = NLMSG_ERROR;
|
||||||
nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr));
|
nlh->nlmsg_len = nlmsg_msg_size(sizeof(struct nlmsgerr));
|
||||||
skb_trim(skb, nlh->nlmsg_len);
|
skb_trim(skb, nlh->nlmsg_len);
|
||||||
e = NLMSG_DATA(nlh);
|
e = nlmsg_data(nlh);
|
||||||
e->error = -EMSGSIZE;
|
e->error = -EMSGSIZE;
|
||||||
memset(&e->msg, 0, sizeof(e->msg));
|
memset(&e->msg, 0, sizeof(e->msg));
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
#include <linux/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
|
@ -172,7 +172,7 @@ static void ipt_ulog_packet(unsigned int hooknum,
|
||||||
else
|
else
|
||||||
copy_len = loginfo->copy_range;
|
copy_len = loginfo->copy_range;
|
||||||
|
|
||||||
size = NLMSG_SPACE(sizeof(*pm) + copy_len);
|
size = nlmsg_total_size(sizeof(*pm) + copy_len);
|
||||||
|
|
||||||
ub = &ulog_buffers[groupnum];
|
ub = &ulog_buffers[groupnum];
|
||||||
|
|
||||||
|
|
|
@ -64,9 +64,9 @@ static int udp_dump_one(struct udp_table *tbl, struct sk_buff *in_skb,
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
rep = alloc_skb(NLMSG_SPACE((sizeof(struct inet_diag_msg) +
|
rep = nlmsg_new(sizeof(struct inet_diag_msg) +
|
||||||
sizeof(struct inet_diag_meminfo) +
|
sizeof(struct inet_diag_meminfo) + 64,
|
||||||
64)), GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (!rep)
|
if (!rep)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
|
@ -842,9 +842,9 @@ static void ip6mr_destroy_unres(struct mr6_table *mrt, struct mfc6_cache *c)
|
||||||
if (ipv6_hdr(skb)->version == 0) {
|
if (ipv6_hdr(skb)->version == 0) {
|
||||||
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct ipv6hdr));
|
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct ipv6hdr));
|
||||||
nlh->nlmsg_type = NLMSG_ERROR;
|
nlh->nlmsg_type = NLMSG_ERROR;
|
||||||
nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr));
|
nlh->nlmsg_len = nlmsg_msg_size(sizeof(struct nlmsgerr));
|
||||||
skb_trim(skb, nlh->nlmsg_len);
|
skb_trim(skb, nlh->nlmsg_len);
|
||||||
((struct nlmsgerr *)NLMSG_DATA(nlh))->error = -ETIMEDOUT;
|
((struct nlmsgerr *)nlmsg_data(nlh))->error = -ETIMEDOUT;
|
||||||
rtnl_unicast(skb, net, NETLINK_CB(skb).portid);
|
rtnl_unicast(skb, net, NETLINK_CB(skb).portid);
|
||||||
} else
|
} else
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
|
@ -1100,13 +1100,13 @@ static void ip6mr_cache_resolve(struct net *net, struct mr6_table *mrt,
|
||||||
if (ipv6_hdr(skb)->version == 0) {
|
if (ipv6_hdr(skb)->version == 0) {
|
||||||
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct ipv6hdr));
|
struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct ipv6hdr));
|
||||||
|
|
||||||
if (__ip6mr_fill_mroute(mrt, skb, c, NLMSG_DATA(nlh)) > 0) {
|
if (__ip6mr_fill_mroute(mrt, skb, c, nlmsg_data(nlh)) > 0) {
|
||||||
nlh->nlmsg_len = skb_tail_pointer(skb) - (u8 *)nlh;
|
nlh->nlmsg_len = skb_tail_pointer(skb) - (u8 *)nlh;
|
||||||
} else {
|
} else {
|
||||||
nlh->nlmsg_type = NLMSG_ERROR;
|
nlh->nlmsg_type = NLMSG_ERROR;
|
||||||
nlh->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr));
|
nlh->nlmsg_len = nlmsg_msg_size(sizeof(struct nlmsgerr));
|
||||||
skb_trim(skb, nlh->nlmsg_len);
|
skb_trim(skb, nlh->nlmsg_len);
|
||||||
((struct nlmsgerr *)NLMSG_DATA(nlh))->error = -EMSGSIZE;
|
((struct nlmsgerr *)nlmsg_data(nlh))->error = -EMSGSIZE;
|
||||||
}
|
}
|
||||||
rtnl_unicast(skb, net, NETLINK_CB(skb).portid);
|
rtnl_unicast(skb, net, NETLINK_CB(skb).portid);
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/ip.h>
|
#include <linux/ip.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/netlink.h>
|
|
||||||
#include <linux/rculist.h>
|
#include <linux/rculist.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
|
||||||
|
@ -1085,7 +1084,7 @@ static int
|
||||||
dump_init(struct netlink_callback *cb)
|
dump_init(struct netlink_callback *cb)
|
||||||
{
|
{
|
||||||
struct nlmsghdr *nlh = nlmsg_hdr(cb->skb);
|
struct nlmsghdr *nlh = nlmsg_hdr(cb->skb);
|
||||||
int min_len = NLMSG_SPACE(sizeof(struct nfgenmsg));
|
int min_len = nlmsg_total_size(sizeof(struct nfgenmsg));
|
||||||
struct nlattr *cda[IPSET_ATTR_CMD_MAX+1];
|
struct nlattr *cda[IPSET_ATTR_CMD_MAX+1];
|
||||||
struct nlattr *attr = (void *)nlh + min_len;
|
struct nlattr *attr = (void *)nlh + min_len;
|
||||||
u32 dump_type;
|
u32 dump_type;
|
||||||
|
@ -1301,7 +1300,7 @@ call_ad(struct sock *ctnl, struct sk_buff *skb, struct ip_set *set,
|
||||||
struct sk_buff *skb2;
|
struct sk_buff *skb2;
|
||||||
struct nlmsgerr *errmsg;
|
struct nlmsgerr *errmsg;
|
||||||
size_t payload = sizeof(*errmsg) + nlmsg_len(nlh);
|
size_t payload = sizeof(*errmsg) + nlmsg_len(nlh);
|
||||||
int min_len = NLMSG_SPACE(sizeof(struct nfgenmsg));
|
int min_len = nlmsg_total_size(sizeof(struct nfgenmsg));
|
||||||
struct nlattr *cda[IPSET_ATTR_CMD_MAX+1];
|
struct nlattr *cda[IPSET_ATTR_CMD_MAX+1];
|
||||||
struct nlattr *cmdattr;
|
struct nlattr *cmdattr;
|
||||||
u32 *errline;
|
u32 *errline;
|
||||||
|
|
|
@ -24,10 +24,9 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/netlink.h>
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
||||||
#include <linux/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <linux/netfilter/nfnetlink.h>
|
#include <linux/netfilter/nfnetlink.h>
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
@ -144,7 +143,7 @@ static int nfnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
/* All the messages must at least contain nfgenmsg */
|
/* All the messages must at least contain nfgenmsg */
|
||||||
if (nlh->nlmsg_len < NLMSG_LENGTH(sizeof(struct nfgenmsg)))
|
if (nlmsg_len(nlh) < sizeof(struct nfgenmsg))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
type = nlh->nlmsg_type;
|
type = nlh->nlmsg_type;
|
||||||
|
@ -172,7 +171,7 @@ replay:
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
int min_len = NLMSG_SPACE(sizeof(struct nfgenmsg));
|
int min_len = nlmsg_total_size(sizeof(struct nfgenmsg));
|
||||||
u_int8_t cb_id = NFNL_MSG_TYPE(nlh->nlmsg_type);
|
u_int8_t cb_id = NFNL_MSG_TYPE(nlh->nlmsg_type);
|
||||||
struct nlattr *cda[ss->cb[cb_id].attr_count + 1];
|
struct nlattr *cda[ss->cb[cb_id].attr_count + 1];
|
||||||
struct nlattr *attr = (void *)nlh + min_len;
|
struct nlattr *attr = (void *)nlh + min_len;
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include <linux/ipv6.h>
|
#include <linux/ipv6.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
#include <linux/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <linux/netfilter/nfnetlink.h>
|
#include <linux/netfilter/nfnetlink.h>
|
||||||
#include <linux/netfilter/nfnetlink_log.h>
|
#include <linux/netfilter/nfnetlink_log.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
|
@ -609,7 +609,7 @@ nfulnl_log_packet(u_int8_t pf,
|
||||||
/* FIXME: do we want to make the size calculation conditional based on
|
/* FIXME: do we want to make the size calculation conditional based on
|
||||||
* what is actually present? way more branches and checks, but more
|
* what is actually present? way more branches and checks, but more
|
||||||
* memory efficient... */
|
* memory efficient... */
|
||||||
size = NLMSG_SPACE(sizeof(struct nfgenmsg))
|
size = nlmsg_total_size(sizeof(struct nfgenmsg))
|
||||||
+ nla_total_size(sizeof(struct nfulnl_msg_packet_hdr))
|
+ nla_total_size(sizeof(struct nfulnl_msg_packet_hdr))
|
||||||
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
||||||
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
||||||
|
|
|
@ -281,7 +281,7 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
|
||||||
struct nf_conn *ct = NULL;
|
struct nf_conn *ct = NULL;
|
||||||
enum ip_conntrack_info uninitialized_var(ctinfo);
|
enum ip_conntrack_info uninitialized_var(ctinfo);
|
||||||
|
|
||||||
size = NLMSG_SPACE(sizeof(struct nfgenmsg))
|
size = nlmsg_total_size(sizeof(struct nfgenmsg))
|
||||||
+ nla_total_size(sizeof(struct nfqnl_msg_packet_hdr))
|
+ nla_total_size(sizeof(struct nfqnl_msg_packet_hdr))
|
||||||
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
||||||
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
+ nla_total_size(sizeof(u_int32_t)) /* ifindex */
|
||||||
|
|
|
@ -1646,7 +1646,7 @@ struct nlmsghdr *
|
||||||
__nlmsg_put(struct sk_buff *skb, u32 portid, u32 seq, int type, int len, int flags)
|
__nlmsg_put(struct sk_buff *skb, u32 portid, u32 seq, int type, int len, int flags)
|
||||||
{
|
{
|
||||||
struct nlmsghdr *nlh;
|
struct nlmsghdr *nlh;
|
||||||
int size = NLMSG_LENGTH(len);
|
int size = nlmsg_msg_size(len);
|
||||||
|
|
||||||
nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size));
|
nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size));
|
||||||
nlh->nlmsg_type = type;
|
nlh->nlmsg_type = type;
|
||||||
|
@ -1655,7 +1655,7 @@ __nlmsg_put(struct sk_buff *skb, u32 portid, u32 seq, int type, int len, int fla
|
||||||
nlh->nlmsg_pid = portid;
|
nlh->nlmsg_pid = portid;
|
||||||
nlh->nlmsg_seq = seq;
|
nlh->nlmsg_seq = seq;
|
||||||
if (!__builtin_constant_p(size) || NLMSG_ALIGN(size) - size != 0)
|
if (!__builtin_constant_p(size) || NLMSG_ALIGN(size) - size != 0)
|
||||||
memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size);
|
memset(nlmsg_data(nlh) + len, 0, NLMSG_ALIGN(size) - size);
|
||||||
return nlh;
|
return nlh;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__nlmsg_put);
|
EXPORT_SYMBOL(__nlmsg_put);
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kmod.h>
|
#include <linux/kmod.h>
|
||||||
#include <linux/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <net/net_namespace.h>
|
#include <net/net_namespace.h>
|
||||||
|
@ -428,7 +428,7 @@ static int tc_dump_tfilter(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
const struct Qdisc_class_ops *cops;
|
const struct Qdisc_class_ops *cops;
|
||||||
struct tcf_dump_args arg;
|
struct tcf_dump_args arg;
|
||||||
|
|
||||||
if (cb->nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*tcm)))
|
if (nlmsg_len(cb->nlh) < sizeof(*tcm))
|
||||||
return skb->len;
|
return skb->len;
|
||||||
dev = __dev_get_by_index(net, tcm->tcm_ifindex);
|
dev = __dev_get_by_index(net, tcm->tcm_ifindex);
|
||||||
if (!dev)
|
if (!dev)
|
||||||
|
|
|
@ -1642,7 +1642,7 @@ static int tc_dump_tclass(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
int t, s_t;
|
int t, s_t;
|
||||||
|
|
||||||
if (cb->nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*tcm)))
|
if (nlmsg_len(cb->nlh) < sizeof(*tcm))
|
||||||
return 0;
|
return 0;
|
||||||
dev = dev_get_by_index(net, tcm->tcm_ifindex);
|
dev = dev_get_by_index(net, tcm->tcm_ifindex);
|
||||||
if (!dev)
|
if (!dev)
|
||||||
|
|
|
@ -44,7 +44,7 @@ static int handle_cmd(struct sk_buff *skb, struct genl_info *info)
|
||||||
struct nlmsghdr *rep_nlh;
|
struct nlmsghdr *rep_nlh;
|
||||||
struct nlmsghdr *req_nlh = info->nlhdr;
|
struct nlmsghdr *req_nlh = info->nlhdr;
|
||||||
struct tipc_genlmsghdr *req_userhdr = info->userhdr;
|
struct tipc_genlmsghdr *req_userhdr = info->userhdr;
|
||||||
int hdr_space = NLMSG_SPACE(GENL_HDRLEN + TIPC_GENL_HDRLEN);
|
int hdr_space = nlmsg_total_size(GENL_HDRLEN + TIPC_GENL_HDRLEN);
|
||||||
u16 cmd;
|
u16 cmd;
|
||||||
|
|
||||||
if ((req_userhdr->cmd & 0xC000) && (!capable(CAP_NET_ADMIN)))
|
if ((req_userhdr->cmd & 0xC000) && (!capable(CAP_NET_ADMIN)))
|
||||||
|
@ -53,8 +53,8 @@ static int handle_cmd(struct sk_buff *skb, struct genl_info *info)
|
||||||
cmd = req_userhdr->cmd;
|
cmd = req_userhdr->cmd;
|
||||||
|
|
||||||
rep_buf = tipc_cfg_do_cmd(req_userhdr->dest, cmd,
|
rep_buf = tipc_cfg_do_cmd(req_userhdr->dest, cmd,
|
||||||
NLMSG_DATA(req_nlh) + GENL_HDRLEN + TIPC_GENL_HDRLEN,
|
nlmsg_data(req_nlh) + GENL_HDRLEN + TIPC_GENL_HDRLEN,
|
||||||
NLMSG_PAYLOAD(req_nlh, GENL_HDRLEN + TIPC_GENL_HDRLEN),
|
nlmsg_attrlen(req_nlh, GENL_HDRLEN + TIPC_GENL_HDRLEN),
|
||||||
hdr_space);
|
hdr_space);
|
||||||
|
|
||||||
if (rep_buf) {
|
if (rep_buf) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue