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
