Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[IPv6] prefix: Convert RTM_NEWPREFIX notifications to use the new netlink api

RTM_GETPREFIX is completely unused and is thus removed.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Thomas Graf and committed by
David S. Miller
6051e2f4 04561c1f

+14 -20
-2
include/linux/rtnetlink.h
··· 81 81 82 82 RTM_NEWPREFIX = 52, 83 83 #define RTM_NEWPREFIX RTM_NEWPREFIX 84 - RTM_GETPREFIX = 54, 85 - #define RTM_GETPREFIX RTM_GETPREFIX 86 84 87 85 RTM_GETMULTICAST = 58, 88 86 #define RTM_GETMULTICAST RTM_GETMULTICAST
-1
net/core/rtnetlink.c
··· 108 108 [RTM_FAM(RTM_NEWTCLASS)] = NLMSG_LENGTH(sizeof(struct tcmsg)), 109 109 [RTM_FAM(RTM_NEWTFILTER)] = NLMSG_LENGTH(sizeof(struct tcmsg)), 110 110 [RTM_FAM(RTM_NEWACTION)] = NLMSG_LENGTH(sizeof(struct tcamsg)), 111 - [RTM_FAM(RTM_NEWPREFIX)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), 112 111 [RTM_FAM(RTM_GETMULTICAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), 113 112 [RTM_FAM(RTM_GETANYCAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), 114 113 };
+14 -16
net/ipv6/addrconf.c
··· 3518 3518 } 3519 3519 3520 3520 static int inet6_fill_prefix(struct sk_buff *skb, struct inet6_dev *idev, 3521 - struct prefix_info *pinfo, u32 pid, u32 seq, 3522 - int event, unsigned int flags) 3521 + struct prefix_info *pinfo, u32 pid, u32 seq, 3522 + int event, unsigned int flags) 3523 3523 { 3524 - struct prefixmsg *pmsg; 3525 - struct nlmsghdr *nlh; 3526 - unsigned char *b = skb->tail; 3524 + struct prefixmsg *pmsg; 3525 + struct nlmsghdr *nlh; 3527 3526 struct prefix_cacheinfo ci; 3528 3527 3529 - nlh = NLMSG_NEW(skb, pid, seq, event, sizeof(*pmsg), flags); 3530 - pmsg = NLMSG_DATA(nlh); 3528 + nlh = nlmsg_put(skb, pid, seq, event, sizeof(*pmsg), flags); 3529 + if (nlh == NULL) 3530 + return -ENOBUFS; 3531 + 3532 + pmsg = nlmsg_data(nlh); 3531 3533 pmsg->prefix_family = AF_INET6; 3532 3534 pmsg->prefix_pad1 = 0; 3533 3535 pmsg->prefix_pad2 = 0; ··· 3537 3535 pmsg->prefix_len = pinfo->prefix_len; 3538 3536 pmsg->prefix_type = pinfo->type; 3539 3537 pmsg->prefix_pad3 = 0; 3540 - 3541 3538 pmsg->prefix_flags = 0; 3542 3539 if (pinfo->onlink) 3543 3540 pmsg->prefix_flags |= IF_PREFIX_ONLINK; 3544 3541 if (pinfo->autoconf) 3545 3542 pmsg->prefix_flags |= IF_PREFIX_AUTOCONF; 3546 3543 3547 - RTA_PUT(skb, PREFIX_ADDRESS, sizeof(pinfo->prefix), &pinfo->prefix); 3544 + NLA_PUT(skb, PREFIX_ADDRESS, sizeof(pinfo->prefix), &pinfo->prefix); 3548 3545 3549 3546 ci.preferred_time = ntohl(pinfo->prefered); 3550 3547 ci.valid_time = ntohl(pinfo->valid); 3551 - RTA_PUT(skb, PREFIX_CACHEINFO, sizeof(ci), &ci); 3548 + NLA_PUT(skb, PREFIX_CACHEINFO, sizeof(ci), &ci); 3552 3549 3553 - nlh->nlmsg_len = skb->tail - b; 3554 - return skb->len; 3550 + return nlmsg_end(skb, nlh); 3555 3551 3556 - nlmsg_failure: 3557 - rtattr_failure: 3558 - skb_trim(skb, b - skb->data); 3559 - return -1; 3552 + nla_put_failure: 3553 + return nlmsg_cancel(skb, nlh); 3560 3554 } 3561 3555 3562 3556 static void inet6_prefix_notify(int event, struct inet6_dev *idev,
-1
security/selinux/nlmsgtab.c
··· 60 60 { RTM_DELACTION, NETLINK_ROUTE_SOCKET__NLMSG_WRITE }, 61 61 { RTM_GETACTION, NETLINK_ROUTE_SOCKET__NLMSG_READ }, 62 62 { RTM_NEWPREFIX, NETLINK_ROUTE_SOCKET__NLMSG_WRITE }, 63 - { RTM_GETPREFIX, NETLINK_ROUTE_SOCKET__NLMSG_READ }, 64 63 { RTM_GETMULTICAST, NETLINK_ROUTE_SOCKET__NLMSG_READ }, 65 64 { RTM_GETANYCAST, NETLINK_ROUTE_SOCKET__NLMSG_READ }, 66 65 { RTM_GETNEIGHTBL, NETLINK_ROUTE_SOCKET__NLMSG_READ },