提交 6051e2f4 编写于 作者: T Thomas Graf 提交者: David S. Miller

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

RTM_GETPREFIX is completely unused and is thus removed.
Signed-off-by: NThomas Graf <tgraf@suug.ch>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 04561c1f
...@@ -81,8 +81,6 @@ enum { ...@@ -81,8 +81,6 @@ enum {
RTM_NEWPREFIX = 52, RTM_NEWPREFIX = 52,
#define RTM_NEWPREFIX RTM_NEWPREFIX #define RTM_NEWPREFIX RTM_NEWPREFIX
RTM_GETPREFIX = 54,
#define RTM_GETPREFIX RTM_GETPREFIX
RTM_GETMULTICAST = 58, RTM_GETMULTICAST = 58,
#define RTM_GETMULTICAST RTM_GETMULTICAST #define RTM_GETMULTICAST RTM_GETMULTICAST
......
...@@ -108,7 +108,6 @@ static const int rtm_min[RTM_NR_FAMILIES] = ...@@ -108,7 +108,6 @@ static const int rtm_min[RTM_NR_FAMILIES] =
[RTM_FAM(RTM_NEWTCLASS)] = NLMSG_LENGTH(sizeof(struct tcmsg)), [RTM_FAM(RTM_NEWTCLASS)] = NLMSG_LENGTH(sizeof(struct tcmsg)),
[RTM_FAM(RTM_NEWTFILTER)] = NLMSG_LENGTH(sizeof(struct tcmsg)), [RTM_FAM(RTM_NEWTFILTER)] = NLMSG_LENGTH(sizeof(struct tcmsg)),
[RTM_FAM(RTM_NEWACTION)] = NLMSG_LENGTH(sizeof(struct tcamsg)), [RTM_FAM(RTM_NEWACTION)] = NLMSG_LENGTH(sizeof(struct tcamsg)),
[RTM_FAM(RTM_NEWPREFIX)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)),
[RTM_FAM(RTM_GETMULTICAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), [RTM_FAM(RTM_GETMULTICAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)),
[RTM_FAM(RTM_GETANYCAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)), [RTM_FAM(RTM_GETANYCAST)] = NLMSG_LENGTH(sizeof(struct rtgenmsg)),
}; };
......
...@@ -3518,16 +3518,18 @@ static inline size_t inet6_prefix_nlmsg_size(void) ...@@ -3518,16 +3518,18 @@ static inline size_t inet6_prefix_nlmsg_size(void)
} }
static int inet6_fill_prefix(struct sk_buff *skb, struct inet6_dev *idev, static int inet6_fill_prefix(struct sk_buff *skb, struct inet6_dev *idev,
struct prefix_info *pinfo, u32 pid, u32 seq, struct prefix_info *pinfo, u32 pid, u32 seq,
int event, unsigned int flags) int event, unsigned int flags)
{ {
struct prefixmsg *pmsg; struct prefixmsg *pmsg;
struct nlmsghdr *nlh; struct nlmsghdr *nlh;
unsigned char *b = skb->tail;
struct prefix_cacheinfo ci; struct prefix_cacheinfo ci;
nlh = NLMSG_NEW(skb, pid, seq, event, sizeof(*pmsg), flags); nlh = nlmsg_put(skb, pid, seq, event, sizeof(*pmsg), flags);
pmsg = NLMSG_DATA(nlh); if (nlh == NULL)
return -ENOBUFS;
pmsg = nlmsg_data(nlh);
pmsg->prefix_family = AF_INET6; pmsg->prefix_family = AF_INET6;
pmsg->prefix_pad1 = 0; pmsg->prefix_pad1 = 0;
pmsg->prefix_pad2 = 0; pmsg->prefix_pad2 = 0;
...@@ -3535,26 +3537,22 @@ static int inet6_fill_prefix(struct sk_buff *skb, struct inet6_dev *idev, ...@@ -3535,26 +3537,22 @@ static int inet6_fill_prefix(struct sk_buff *skb, struct inet6_dev *idev,
pmsg->prefix_len = pinfo->prefix_len; pmsg->prefix_len = pinfo->prefix_len;
pmsg->prefix_type = pinfo->type; pmsg->prefix_type = pinfo->type;
pmsg->prefix_pad3 = 0; pmsg->prefix_pad3 = 0;
pmsg->prefix_flags = 0; pmsg->prefix_flags = 0;
if (pinfo->onlink) if (pinfo->onlink)
pmsg->prefix_flags |= IF_PREFIX_ONLINK; pmsg->prefix_flags |= IF_PREFIX_ONLINK;
if (pinfo->autoconf) if (pinfo->autoconf)
pmsg->prefix_flags |= IF_PREFIX_AUTOCONF; pmsg->prefix_flags |= IF_PREFIX_AUTOCONF;
RTA_PUT(skb, PREFIX_ADDRESS, sizeof(pinfo->prefix), &pinfo->prefix); NLA_PUT(skb, PREFIX_ADDRESS, sizeof(pinfo->prefix), &pinfo->prefix);
ci.preferred_time = ntohl(pinfo->prefered); ci.preferred_time = ntohl(pinfo->prefered);
ci.valid_time = ntohl(pinfo->valid); ci.valid_time = ntohl(pinfo->valid);
RTA_PUT(skb, PREFIX_CACHEINFO, sizeof(ci), &ci); NLA_PUT(skb, PREFIX_CACHEINFO, sizeof(ci), &ci);
nlh->nlmsg_len = skb->tail - b; return nlmsg_end(skb, nlh);
return skb->len;
nlmsg_failure: nla_put_failure:
rtattr_failure: return nlmsg_cancel(skb, nlh);
skb_trim(skb, b - skb->data);
return -1;
} }
static void inet6_prefix_notify(int event, struct inet6_dev *idev, static void inet6_prefix_notify(int event, struct inet6_dev *idev,
......
...@@ -60,7 +60,6 @@ static struct nlmsg_perm nlmsg_route_perms[] = ...@@ -60,7 +60,6 @@ static struct nlmsg_perm nlmsg_route_perms[] =
{ RTM_DELACTION, NETLINK_ROUTE_SOCKET__NLMSG_WRITE }, { RTM_DELACTION, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
{ RTM_GETACTION, NETLINK_ROUTE_SOCKET__NLMSG_READ }, { RTM_GETACTION, NETLINK_ROUTE_SOCKET__NLMSG_READ },
{ RTM_NEWPREFIX, NETLINK_ROUTE_SOCKET__NLMSG_WRITE }, { RTM_NEWPREFIX, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
{ RTM_GETPREFIX, NETLINK_ROUTE_SOCKET__NLMSG_READ },
{ RTM_GETMULTICAST, NETLINK_ROUTE_SOCKET__NLMSG_READ }, { RTM_GETMULTICAST, NETLINK_ROUTE_SOCKET__NLMSG_READ },
{ RTM_GETANYCAST, NETLINK_ROUTE_SOCKET__NLMSG_READ }, { RTM_GETANYCAST, NETLINK_ROUTE_SOCKET__NLMSG_READ },
{ RTM_GETNEIGHTBL, NETLINK_ROUTE_SOCKET__NLMSG_READ }, { RTM_GETNEIGHTBL, NETLINK_ROUTE_SOCKET__NLMSG_READ },
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册