> On Apr 19, 2017, at 3:50 PM, Joe Stringer <[email protected]> wrote:
> 
> On 19 April 2017 at 14:35, Jarno Rajahalme <[email protected] 
> <mailto:[email protected]>> wrote:
>> From: Johannes Berg <[email protected]>
>> 
>> Upstream commit:
>> 
>>    commit fceb6435e85298f747fee938415057af837f5a8a
>>    Author: Johannes Berg <[email protected]>
>>    Date:   Wed Apr 12 14:34:07 2017 +0200
>> 
>>    netlink: pass extended ACK struct to parsing functions
>> 
>>    Pass the new extended ACK reporting struct to all of the generic
>>    netlink parsing functions. For now, pass NULL in almost all callers
>>    (except for some in the core.)
>> 
>>    Signed-off-by: Johannes Berg <[email protected]>
>>    Signed-off-by: David S. Miller <[email protected]>
>> 
>> Signed-off-by: Jarno Rajahalme <[email protected]>
>> ---
>> acinclude.m4                                  |  3 +++
>> datapath/datapath.c                           |  2 +-
>> datapath/flow_netlink.c                       |  4 ++--
>> datapath/linux/compat/include/net/genetlink.h | 14 +++++++++-----
>> datapath/linux/compat/include/net/netlink.h   | 14 ++++++++++++++
>> datapath/vport-vxlan.c                        |  3 ++-
>> 6 files changed, 31 insertions(+), 9 deletions(-)
>> 
>> diff --git a/acinclude.m4 b/acinclude.m4
>> index 6a2b9f1..9f8e30d 100644
>> --- a/acinclude.m4
>> +++ b/acinclude.m4
>> @@ -663,6 +663,9 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
>>   OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_is_last])
>>   OVS_GREP_IFELSE([$KSRC/include/linux/netlink.h], [void.*netlink_set_err],
>>                   [OVS_DEFINE([HAVE_VOID_NETLINK_SET_ERR])])
>> +  OVS_FIND_PARAM_IFELSE([$KSRC/include/net/netlink.h],
>> +                        [nla_parse], [netlink_ext_ack],
>> +                        [OVS_DEFINE([HAVE_NETLINK_EXT_ACK])])
>> 
>>   OVS_GREP_IFELSE([$KSRC/include/net/sctp/checksum.h], [sctp_compute_cksum])
>> 
>> diff --git a/datapath/datapath.c b/datapath/datapath.c
>> index 8cf0381..c85029c 100644
>> --- a/datapath/datapath.c
>> +++ b/datapath/datapath.c
>> @@ -1365,7 +1365,7 @@ static int ovs_flow_cmd_dump(struct sk_buff *skb, 
>> struct netlink_callback *cb)
>>        int err;
>> 
>>        err = genlmsg_parse(cb->nlh, &dp_flow_genl_family, a,
>> -                           OVS_FLOW_ATTR_MAX, flow_policy);
>> +                           OVS_FLOW_ATTR_MAX, flow_policy, NULL);
>>        if (err)
>>                return err;
>>        ufid_flags = ovs_nla_get_ufid_flags(a[OVS_FLOW_ATTR_UFID_FLAGS]);
>> diff --git a/datapath/flow_netlink.c b/datapath/flow_netlink.c
>> index 0762f6c..07ab8e9 100644
>> --- a/datapath/flow_netlink.c
>> +++ b/datapath/flow_netlink.c
>> @@ -2431,8 +2431,8 @@ static int validate_userspace(const struct nlattr 
>> *attr)
>>        struct nlattr *a[OVS_USERSPACE_ATTR_MAX + 1];
>>        int error;
>> 
>> -       error = nla_parse_nested(a, OVS_USERSPACE_ATTR_MAX,
>> -                                attr, userspace_policy);
>> +       error = nla_parse_nested(a, OVS_USERSPACE_ATTR_MAX, attr,
>> +                                userspace_policy, NULL);
>>        if (error)
>>                return error;
>> 
>> diff --git a/datapath/linux/compat/include/net/genetlink.h 
>> b/datapath/linux/compat/include/net/genetlink.h
>> index 4b42cf7..f35bc02 100644
>> --- a/datapath/linux/compat/include/net/genetlink.h
>> +++ b/datapath/linux/compat/include/net/genetlink.h
>> @@ -125,15 +125,19 @@ static inline int rpl_genl_has_listeners(struct 
>> genl_family *family,
>> 
>> #endif /* HAVE_GENL_HAS_LISTENERS */
>> 
>> -#ifndef HAVE_GENLMSG_PARSE
>> -static inline int genlmsg_parse(const struct nlmsghdr *nlh,
>> -                               const struct genl_family *family,
>> -                               struct nlattr *tb[], int maxtype,
>> -                               const struct nla_policy *policy)
>> +#ifndef HAVE_NETLINK_EXT_ACK
>> +struct netlink_ext_ack;
>> +
>> +static inline int rpl_genlmsg_parse(const struct nlmsghdr *nlh,
>> +                                   const struct genl_family *family,
>> +                                   struct nlattr *tb[], int maxtype,
>> +                                   const struct nla_policy *policy,
>> +                                   struct netlink_ext_ack *extack)
>> {
>>        return nlmsg_parse(nlh, family->hdrsize + GENL_HDRLEN, tb, maxtype,
>>                           policy);
>> }
>> +#define genlmsg_parse rpl_genlmsg_parse
>> #endif
>> 
>> #endif /* genetlink.h */
>> diff --git a/datapath/linux/compat/include/net/netlink.h 
>> b/datapath/linux/compat/include/net/netlink.h
>> index 082afac..b791a3f 100644
>> --- a/datapath/linux/compat/include/net/netlink.h
>> +++ b/datapath/linux/compat/include/net/netlink.h
>> @@ -157,4 +157,18 @@ static inline int nla_put_be64(struct sk_buff *skb, int 
>> attrtype, __be64 value,
>> }
>> 
>> #endif
>> +
>> +#ifndef HAVE_NETLINK_EXT_ACK
>> +struct netlink_ext_ack;
>> +
>> +static inline int rpl_nla_parse_nested(struct nlattr *tb[], int maxtype,
>> +                                      const struct nlattr *nla,
>> +                                      const struct nla_policy *policy,
>> +                                      struct netlink_ext_ack *extack)
>> +{
>> +       return nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy);
> 
> Should this be calling nla_parse_nested() ?

Would be clearer that way, so I’ll change this for v2.

  Jarno


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to