Thank you! I applied this to master.
On Thu, Jan 16, 2014 at 06:08:12PM -0800, Alex Wang wrote: > Looks good to me~ > > > On Thu, Jan 16, 2014 at 5:22 PM, Ben Pfaff <[email protected]> wrote: > > > Commit 73c85181d (netdev-linux: Read packet auxdata to obtain vlan_tid) > > added #include <linux/if_packet.h> to this file, to get the definition > > of PACKET_AUXDATA and some other definitions, but on RHEL 6.1 this > > provoked compiler errors: > > > > In file included from /usr/include/linux/rtnetlink.h:5, > > from lib/netdev-linux.c:34: > > /usr/include/linux/netlink.h:34: error: expected specifier-qualifier-list > > before 'sa_family_t' > > > > Since the old #includes worked everywhere, and this file already defined > > its own versions of most of the new macros that it needed, this commit just > > reverts the old #includes and adds the one macro definition it didn't > > already have. > > > > (RHEL 6.1 isn't necessarily the only platform where this is a problem, but > > it's the first one for which we noticed the problem.) > > > > This switches the definition of sockaddr_ll used from the Linux one, which > > uses __be16 for sll_protocol, to the glibc one, which uses plain "unsigned > > short int". This makes sparse complain (rightly), so this commit also > > adds a sparse-specific header that uses ovs_be16 to prevent the warning. > > > > Signed-off-by: Ben Pfaff <[email protected]> > > --- > > include/sparse/automake.mk | 1 + > > include/sparse/netpacket/packet.h | 37 > > +++++++++++++++++++++++++++++++++++++ > > lib/netdev-linux.c | 9 +++++++-- > > 3 files changed, 45 insertions(+), 2 deletions(-) > > create mode 100644 include/sparse/netpacket/packet.h > > > > diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk > > index 45ae1f5..572c7c2 100644 > > --- a/include/sparse/automake.mk > > +++ b/include/sparse/automake.mk > > @@ -4,6 +4,7 @@ noinst_HEADERS += \ > > include/sparse/math.h \ > > include/sparse/netinet/in.h \ > > include/sparse/netinet/ip6.h \ > > + include/sparse/netpacket/packet.h \ > > include/sparse/pthread.h \ > > include/sparse/sys/socket.h \ > > include/sparse/sys/wait.h > > diff --git a/include/sparse/netpacket/packet.h > > b/include/sparse/netpacket/packet.h > > new file mode 100644 > > index 0000000..21bdd2e > > --- /dev/null > > +++ b/include/sparse/netpacket/packet.h > > @@ -0,0 +1,37 @@ > > +/* > > + * Copyright (c) 2014 Nicira, Inc. > > + * > > + * Licensed under the Apache License, Version 2.0 (the "License"); > > + * you may not use this file except in compliance with the License. > > + * You may obtain a copy of the License at: > > + * > > + * http://www.apache.org/licenses/LICENSE-2.0 > > + * > > + * Unless required by applicable law or agreed to in writing, software > > + * distributed under the License is distributed on an "AS IS" BASIS, > > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > > implied. > > + * See the License for the specific language governing permissions and > > + * limitations under the License. > > + */ > > + > > +#ifndef __CHECKER__ > > +#error "Use this header only with sparse. It is not a correct > > implementation." > > +#endif > > + > > +#ifndef __NETPACKET_PACKET_SPARSE > > +#define __NETPACKET_PACKET_SPARSE 1 > > + > > +#include "openvswitch/types.h" > > + > > +struct sockaddr_ll > > + { > > + unsigned short int sll_family; > > + ovs_be16 sll_protocol; > > + int sll_ifindex; > > + unsigned short int sll_hatype; > > + unsigned char sll_pkttype; > > + unsigned char sll_halen; > > + unsigned char sll_addr[8]; > > + }; > > + > > +#endif /* <netpacket/packet.h> sparse */ > > diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c > > index 9c1a36d..e756d88 100644 > > --- a/lib/netdev-linux.c > > +++ b/lib/netdev-linux.c > > @@ -1,5 +1,5 @@ > > /* > > - * Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc. > > + * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. > > * > > * Licensed under the Apache License, Version 2.0 (the "License"); > > * you may not use this file except in compliance with the License. > > @@ -20,11 +20,11 @@ > > > > #include <errno.h> > > #include <fcntl.h> > > +#include <arpa/inet.h> > > #include <inttypes.h> > > #include <linux/filter.h> > > #include <linux/gen_stats.h> > > #include <linux/if_ether.h> > > -#include <linux/if_packet.h> > > #include <linux/if_tun.h> > > #include <linux/types.h> > > #include <linux/ethtool.h> > > @@ -37,8 +37,10 @@ > > #include <sys/types.h> > > #include <sys/ioctl.h> > > #include <sys/socket.h> > > +#include <netpacket/packet.h> > > #include <net/if.h> > > #include <net/if_arp.h> > > +#include <net/if_packet.h> > > #include <net/route.h> > > #include <netinet/in.h> > > #include <poll.h> > > @@ -116,6 +118,9 @@ COVERAGE_DEFINE(netdev_set_ethtool); > > * With all this churn it's easiest to unconditionally define a > > replacement > > * structure that has everything we want. > > */ > > +#ifndef PACKET_AUXDATA > > +#define PACKET_AUXDATA 8 > > +#endif > > #ifndef TP_STATUS_VLAN_VALID > > #define TP_STATUS_VLAN_VALID (1 << 4) > > #endif > > -- > > 1.7.10.4 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > http://openvswitch.org/mailman/listinfo/dev > > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
