mirror of
https://github.com/openvswitch/ovs
synced 2025-09-03 07:45:30 +00:00
Make the source tree sparse clean.
With this commit, the tree compiles clean with sparse commit 87f4a7fda3d "Teach 'already_tokenized()' to use the stream name hash table" with patch "evaluate: Allow sizeof(_Bool) to succeed" available at http://permalink.gmane.org/gmane.comp.parsers.sparse/2461 applied, as long as the "include/sparse" directory is included for use by sparse (only), e.g.: make CC="CHECK='sparse -I../include/sparse' cgcc"
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
include include/linux/automake.mk
|
include include/linux/automake.mk
|
||||||
include include/openflow/automake.mk
|
include include/openflow/automake.mk
|
||||||
include include/openvswitch/automake.mk
|
include include/openvswitch/automake.mk
|
||||||
|
include include/sparse/automake.mk
|
||||||
|
21
include/sparse/arpa/inet.h
Normal file
21
include/sparse/arpa/inet.h
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Nicira Networks.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#include <netinet/in.h>
|
22
include/sparse/assert.h
Normal file
22
include/sparse/assert.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Nicira Networks.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
extern void __ovs_assert(_Bool);
|
||||||
|
#define assert(EXPRESSION) __ovs_assert(EXPRESSION)
|
8
include/sparse/automake.mk
Normal file
8
include/sparse/automake.mk
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
noinst_HEADERS += \
|
||||||
|
include/sparse/arpa/inet.h \
|
||||||
|
include/sparse/assert.h \
|
||||||
|
include/sparse/math.h \
|
||||||
|
include/sparse/netinet/in.h \
|
||||||
|
include/sparse/netinet/ip6.h \
|
||||||
|
include/sparse/sys/socket.h \
|
||||||
|
include/sparse/sys/wait.h
|
203
include/sparse/math.h
Normal file
203
include/sparse/math.h
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Nicira Networks.
|
||||||
|
*
|
||||||
|
* 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 __SYS_MATH_SPARSE
|
||||||
|
#define __SYS_MATH_SPARSE 1
|
||||||
|
|
||||||
|
double acos(double);
|
||||||
|
float acosf(float);
|
||||||
|
double acosh(double);
|
||||||
|
float acoshf(float);
|
||||||
|
long double acoshl(long double);
|
||||||
|
long double acosl(long double);
|
||||||
|
double asin(double);
|
||||||
|
float asinf(float);
|
||||||
|
double asinh(double);
|
||||||
|
float asinhf(float);
|
||||||
|
long double asinhl(long double);
|
||||||
|
long double asinl(long double);
|
||||||
|
double atan(double);
|
||||||
|
double atan2(double, double);
|
||||||
|
float atan2f(float, float);
|
||||||
|
long double atan2l(long double, long double);
|
||||||
|
float atanf(float);
|
||||||
|
double atanh(double);
|
||||||
|
float atanhf(float);
|
||||||
|
long double atanhl(long double);
|
||||||
|
long double atanl(long double);
|
||||||
|
double cbrt(double);
|
||||||
|
float cbrtf(float);
|
||||||
|
long double cbrtl(long double);
|
||||||
|
double ceil(double);
|
||||||
|
float ceilf(float);
|
||||||
|
long double ceill(long double);
|
||||||
|
double copysign(double, double);
|
||||||
|
float copysignf(float, float);
|
||||||
|
long double copysignl(long double, long double);
|
||||||
|
double cos(double);
|
||||||
|
float cosf(float);
|
||||||
|
double cosh(double);
|
||||||
|
float coshf(float);
|
||||||
|
long double coshl(long double);
|
||||||
|
long double cosl(long double);
|
||||||
|
double erf(double);
|
||||||
|
double erfc(double);
|
||||||
|
float erfcf(float);
|
||||||
|
long double erfcl(long double);
|
||||||
|
float erff(float);
|
||||||
|
long double erfl(long double);
|
||||||
|
double exp(double);
|
||||||
|
double exp2(double);
|
||||||
|
float exp2f(float);
|
||||||
|
long double exp2l(long double);
|
||||||
|
float expf(float);
|
||||||
|
long double expl(long double);
|
||||||
|
double expm1(double);
|
||||||
|
float expm1f(float);
|
||||||
|
long double expm1l(long double);
|
||||||
|
double fabs(double);
|
||||||
|
float fabsf(float);
|
||||||
|
long double fabsl(long double);
|
||||||
|
double fdim(double, double);
|
||||||
|
float fdimf(float, float);
|
||||||
|
long double fdiml(long double, long double);
|
||||||
|
double floor(double);
|
||||||
|
float floorf(float);
|
||||||
|
long double floorl(long double);
|
||||||
|
double fma(double, double, double);
|
||||||
|
float fmaf(float, float, float);
|
||||||
|
long double fmal(long double, long double, long double);
|
||||||
|
double fmax(double, double);
|
||||||
|
float fmaxf(float, float);
|
||||||
|
long double fmaxl(long double, long double);
|
||||||
|
double fmin(double, double);
|
||||||
|
float fminf(float, float);
|
||||||
|
long double fminl(long double, long double);
|
||||||
|
double fmod(double, double);
|
||||||
|
float fmodf(float, float);
|
||||||
|
long double fmodl(long double, long double);
|
||||||
|
double frexp(double, int *);
|
||||||
|
float frexpf(float value, int *);
|
||||||
|
long double frexpl(long double value, int *);
|
||||||
|
double hypot(double, double);
|
||||||
|
float hypotf(float, float);
|
||||||
|
long double hypotl(long double, long double);
|
||||||
|
int ilogb(double);
|
||||||
|
int ilogbf(float);
|
||||||
|
int ilogbl(long double);
|
||||||
|
double j0(double);
|
||||||
|
double j1(double);
|
||||||
|
double jn(int, double);
|
||||||
|
double ldexp(double, int);
|
||||||
|
float ldexpf(float, int);
|
||||||
|
long double ldexpl(long double, int);
|
||||||
|
double lgamma(double);
|
||||||
|
float lgammaf(float);
|
||||||
|
long double lgammal(long double);
|
||||||
|
long long llrint(double);
|
||||||
|
long long llrintf(float);
|
||||||
|
long long llrintl(long double);
|
||||||
|
long long llround(double);
|
||||||
|
long long llroundf(float);
|
||||||
|
long long llroundl(long double);
|
||||||
|
double log(double);
|
||||||
|
double log10(double);
|
||||||
|
float log10f(float);
|
||||||
|
long double log10l(long double);
|
||||||
|
double log1p(double);
|
||||||
|
float log1pf(float);
|
||||||
|
long double log1pl(long double);
|
||||||
|
double log2(double);
|
||||||
|
float log2f(float);
|
||||||
|
long double log2l(long double);
|
||||||
|
double logb(double);
|
||||||
|
float logbf(float);
|
||||||
|
long double logbl(long double);
|
||||||
|
float logf(float);
|
||||||
|
long double logl(long double);
|
||||||
|
long lrint(double);
|
||||||
|
long lrintf(float);
|
||||||
|
long lrintl(long double);
|
||||||
|
long lround(double);
|
||||||
|
long lroundf(float);
|
||||||
|
long lroundl(long double);
|
||||||
|
double modf(double, double *);
|
||||||
|
float modff(float, float *);
|
||||||
|
long double modfl(long double, long double *);
|
||||||
|
double nan(const char *);
|
||||||
|
float nanf(const char *);
|
||||||
|
long double nanl(const char *);
|
||||||
|
double nearbyint(double);
|
||||||
|
float nearbyintf(float);
|
||||||
|
long double nearbyintl(long double);
|
||||||
|
double nextafter(double, double);
|
||||||
|
float nextafterf(float, float);
|
||||||
|
long double nextafterl(long double, long double);
|
||||||
|
double nexttoward(double, long double);
|
||||||
|
float nexttowardf(float, long double);
|
||||||
|
long double nexttowardl(long double, long double);
|
||||||
|
double pow(double, double);
|
||||||
|
float powf(float, float);
|
||||||
|
long double powl(long double, long double);
|
||||||
|
double remainder(double, double);
|
||||||
|
float remainderf(float, float);
|
||||||
|
long double remainderl(long double, long double);
|
||||||
|
double remquo(double, double, int *);
|
||||||
|
float remquof(float, float, int *);
|
||||||
|
long double remquol(long double, long double, int *);
|
||||||
|
double rint(double);
|
||||||
|
float rintf(float);
|
||||||
|
long double rintl(long double);
|
||||||
|
double round(double);
|
||||||
|
float roundf(float);
|
||||||
|
long double roundl(long double);
|
||||||
|
double scalb(double, double);
|
||||||
|
double scalbln(double, long);
|
||||||
|
float scalblnf(float, long);
|
||||||
|
long double scalblnl(long double, long);
|
||||||
|
double scalbn(double, int);
|
||||||
|
float scalbnf(float, int);
|
||||||
|
long double scalbnl(long double, int);
|
||||||
|
double sin(double);
|
||||||
|
float sinf(float);
|
||||||
|
double sinh(double);
|
||||||
|
float sinhf(float);
|
||||||
|
long double sinhl(long double);
|
||||||
|
long double sinl(long double);
|
||||||
|
double sqrt(double);
|
||||||
|
float sqrtf(float);
|
||||||
|
long double sqrtl(long double);
|
||||||
|
double tan(double);
|
||||||
|
float tanf(float);
|
||||||
|
double tanh(double);
|
||||||
|
float tanhf(float);
|
||||||
|
long double tanhl(long double);
|
||||||
|
long double tanl(long double);
|
||||||
|
double tgamma(double);
|
||||||
|
float tgammaf(float);
|
||||||
|
long double tgammal(long double);
|
||||||
|
double trunc(double);
|
||||||
|
float truncf(float);
|
||||||
|
long double truncl(long double);
|
||||||
|
double y0(double);
|
||||||
|
double y1(double);
|
||||||
|
double yn(int, double);
|
||||||
|
|
||||||
|
#endif /* <sys/math.h> for sparse */
|
95
include/sparse/netinet/in.h
Normal file
95
include/sparse/netinet/in.h
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Nicira Networks.
|
||||||
|
*
|
||||||
|
* 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 __NETINET_IN_SPARSE
|
||||||
|
#define __NETINET_IN_SPARSE 1
|
||||||
|
|
||||||
|
#include "openvswitch/types.h"
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
|
||||||
|
typedef ovs_be16 in_port_t;
|
||||||
|
typedef ovs_be32 in_addr_t;
|
||||||
|
|
||||||
|
struct in_addr {
|
||||||
|
in_addr_t s_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sockaddr_in {
|
||||||
|
sa_family_t sin_family;
|
||||||
|
in_port_t sin_port;
|
||||||
|
struct in_addr sin_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct in6_addr {
|
||||||
|
union {
|
||||||
|
uint8_t u_s6_addr[16];
|
||||||
|
} u;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define s6_addr u.u_s6_addr
|
||||||
|
|
||||||
|
extern const struct in6_addr in6addr_any;
|
||||||
|
|
||||||
|
#define IPPROTO_IP 0
|
||||||
|
#define IPPROTO_HOPOPTS 0
|
||||||
|
#define IPPROTO_ICMP 1
|
||||||
|
#define IPPROTO_TCP 6
|
||||||
|
#define IPPROTO_UDP 17
|
||||||
|
#define IPPROTO_ROUTING 43
|
||||||
|
#define IPPROTO_FRAGMENT 44
|
||||||
|
#define IPPROTO_AH 51
|
||||||
|
#define IPPROTO_ICMPV6 58
|
||||||
|
#define IPPROTO_NONE 59
|
||||||
|
#define IPPROTO_DSTOPTS 60
|
||||||
|
|
||||||
|
#define INADDR_ANY 0x00000000
|
||||||
|
#define INADDR_BROADCAST 0xffffffff
|
||||||
|
#define INADDR_NONE 0xffffffff
|
||||||
|
|
||||||
|
#define INET6_ADDRSTRLEN 46
|
||||||
|
|
||||||
|
static inline ovs_be32 htonl(uint32_t x)
|
||||||
|
{
|
||||||
|
return (OVS_FORCE ovs_be32) x;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline ovs_be16 htons(uint16_t x)
|
||||||
|
{
|
||||||
|
return (OVS_FORCE ovs_be16) x;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t ntohl(ovs_be32 x)
|
||||||
|
{
|
||||||
|
return (OVS_FORCE uint32_t) x;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint16_t ntohs(ovs_be16 x)
|
||||||
|
{
|
||||||
|
return (OVS_FORCE uint16_t) x;
|
||||||
|
}
|
||||||
|
|
||||||
|
in_addr_t inet_addr(const char *);
|
||||||
|
int inet_aton (const char *, struct in_addr *);
|
||||||
|
char *inet_ntoa(struct in_addr);
|
||||||
|
const char *inet_ntop(int, const void *, char *, socklen_t);
|
||||||
|
int inet_pton(int, const char *, void *);
|
||||||
|
|
||||||
|
#endif /* <netinet/in.h> sparse */
|
61
include/sparse/netinet/ip6.h
Normal file
61
include/sparse/netinet/ip6.h
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Nicira Networks.
|
||||||
|
*
|
||||||
|
* 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 __NETINET_IP6_SPARSE
|
||||||
|
#define __NETINET_IP6_SPARSE 1
|
||||||
|
|
||||||
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
struct ip6_hdr {
|
||||||
|
union {
|
||||||
|
struct ip6_hdrctl {
|
||||||
|
ovs_be32 ip6_un1_flow;
|
||||||
|
ovs_be16 ip6_un1_plen;
|
||||||
|
uint8_t ip6_un1_nxt;
|
||||||
|
uint8_t ip6_un1_hlim;
|
||||||
|
} ip6_un1;
|
||||||
|
uint8_t ip6_un2_vfc;
|
||||||
|
} ip6_ctlun;
|
||||||
|
struct in6_addr ip6_src;
|
||||||
|
struct in6_addr ip6_dst;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ip6_vfc ip6_ctlun.ip6_un2_vfc
|
||||||
|
#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow
|
||||||
|
#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen
|
||||||
|
#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
|
||||||
|
#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
|
||||||
|
#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
|
||||||
|
|
||||||
|
struct ip6_ext {
|
||||||
|
uint8_t ip6e_nxt;
|
||||||
|
uint8_t ip6e_len;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ip6_frag {
|
||||||
|
uint8_t ip6f_nxt;
|
||||||
|
uint8_t ip6f_reserved;
|
||||||
|
ovs_be16 ip6f_offlg;
|
||||||
|
ovs_be32 ip6f_ident;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define IP6F_OFF_MASK ((OVS_FORCE ovs_be16) 0xfff8)
|
||||||
|
|
||||||
|
#endif /* netinet/ip6.h sparse */
|
133
include/sparse/sys/socket.h
Normal file
133
include/sparse/sys/socket.h
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Nicira Networks.
|
||||||
|
*
|
||||||
|
* 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 __SYS_SOCKET_SPARSE
|
||||||
|
#define __SYS_SOCKET_SPARSE 1
|
||||||
|
|
||||||
|
#include "openvswitch/types.h"
|
||||||
|
#include <sys/uio.h>
|
||||||
|
|
||||||
|
typedef unsigned short int sa_family_t;
|
||||||
|
typedef __socklen_t socklen_t;
|
||||||
|
|
||||||
|
struct sockaddr {
|
||||||
|
sa_family_t sa_family;
|
||||||
|
char sa_data[64];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sockaddr_storage {
|
||||||
|
sa_family_t ss_family;
|
||||||
|
char sa_data[64];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct msghdr {
|
||||||
|
void *msg_name;
|
||||||
|
socklen_t msg_namelen;
|
||||||
|
struct iovec *msg_iov;
|
||||||
|
int msg_iovlen;
|
||||||
|
void *msg_control;
|
||||||
|
socklen_t msg_controllen;
|
||||||
|
int msg_flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SOCK_DGRAM,
|
||||||
|
SOCK_RAW,
|
||||||
|
SOCK_SEQPACKET,
|
||||||
|
SOCK_STREAM
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SOL_SOCKET
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SO_ACCEPTCONN,
|
||||||
|
SO_BROADCAST,
|
||||||
|
SO_DEBUG,
|
||||||
|
SO_DONTROUTE,
|
||||||
|
SO_ERROR,
|
||||||
|
SO_KEEPALIVE,
|
||||||
|
SO_LINGER,
|
||||||
|
SO_OOBINLINE,
|
||||||
|
SO_RCVBUF,
|
||||||
|
SO_RCVLOWAT,
|
||||||
|
SO_RCVTIMEO,
|
||||||
|
SO_REUSEADDR,
|
||||||
|
SO_SNDBUF,
|
||||||
|
SO_SNDLOWAT,
|
||||||
|
SO_SNDTIMEO,
|
||||||
|
SO_TYPE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MSG_CTRUNC,
|
||||||
|
MSG_DONTROUTE,
|
||||||
|
MSG_EOR,
|
||||||
|
MSG_OOB,
|
||||||
|
MSG_NOSIGNAL,
|
||||||
|
MSG_PEEK,
|
||||||
|
MSG_TRUNC,
|
||||||
|
MSG_WAITALL,
|
||||||
|
MSG_DONTWAIT
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AF_UNSPEC,
|
||||||
|
PF_UNSPEC = AF_UNSPEC,
|
||||||
|
AF_INET,
|
||||||
|
PF_INET = AF_INET,
|
||||||
|
AF_INET6,
|
||||||
|
PF_INET6 = AF_INET6,
|
||||||
|
AF_UNIX,
|
||||||
|
PF_UNIX = AF_UNIX,
|
||||||
|
AF_NETLINK,
|
||||||
|
PF_NETLINK = AF_NETLINK,
|
||||||
|
AF_PACKET,
|
||||||
|
PF_PACKET = AF_PACKET
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SHUT_RD,
|
||||||
|
SHUT_RDWR,
|
||||||
|
SHUT_WR
|
||||||
|
};
|
||||||
|
|
||||||
|
int accept(int, struct sockaddr *, socklen_t *);
|
||||||
|
int bind(int, const struct sockaddr *, socklen_t);
|
||||||
|
int connect(int, const struct sockaddr *, socklen_t);
|
||||||
|
int getpeername(int, struct sockaddr *, socklen_t *);
|
||||||
|
int getsockname(int, struct sockaddr *, socklen_t *);
|
||||||
|
int getsockopt(int, int, int, void *, socklen_t *);
|
||||||
|
int listen(int, int);
|
||||||
|
ssize_t recv(int, void *, size_t, int);
|
||||||
|
ssize_t recvfrom(int, void *, size_t, int, struct sockaddr *, socklen_t *);
|
||||||
|
ssize_t recvmsg(int, struct msghdr *, int);
|
||||||
|
ssize_t send(int, const void *, size_t, int);
|
||||||
|
ssize_t sendmsg(int, const struct msghdr *, int);
|
||||||
|
ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *,
|
||||||
|
socklen_t);
|
||||||
|
int setsockopt(int, int, int, const void *, socklen_t);
|
||||||
|
int shutdown(int, int);
|
||||||
|
int sockatmark(int);
|
||||||
|
int socket(int, int, int);
|
||||||
|
int socketpair(int, int, int, int[2]);
|
||||||
|
|
||||||
|
#endif /* <sys/socket.h> for sparse */
|
34
include/sparse/sys/wait.h
Normal file
34
include/sparse/sys/wait.h
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Nicira Networks.
|
||||||
|
*
|
||||||
|
* 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 __SYS_WAIT_SPARSE
|
||||||
|
#define __SYS_WAIT_SPARSE 1
|
||||||
|
|
||||||
|
#include_next <sys/wait.h>
|
||||||
|
|
||||||
|
#undef wait
|
||||||
|
#define wait(a) rpl_wait(a)
|
||||||
|
pid_t rpl_wait(int *);
|
||||||
|
|
||||||
|
#undef waitpid
|
||||||
|
#define waitpid(a, b, c) rpl_waitpid(a, b, c)
|
||||||
|
pid_t rpl_waitpid(pid_t, int *, int);
|
||||||
|
|
||||||
|
#endif /* <sys/wait.h> for sparse */
|
@@ -21,6 +21,7 @@
|
|||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include "openvswitch/types.h"
|
#include "openvswitch/types.h"
|
||||||
|
|
||||||
|
#ifndef __CHECKER__
|
||||||
static inline ovs_be64
|
static inline ovs_be64
|
||||||
htonll(uint64_t n)
|
htonll(uint64_t n)
|
||||||
{
|
{
|
||||||
@@ -32,14 +33,21 @@ ntohll(ovs_be64 n)
|
|||||||
{
|
{
|
||||||
return htonl(1) == 1 ? n : ((uint64_t) ntohl(n) << 32) | ntohl(n >> 32);
|
return htonl(1) == 1 ? n : ((uint64_t) ntohl(n) << 32) | ntohl(n >> 32);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
/* Making sparse happy with these functions also makes them unreadable, so
|
||||||
|
* don't bother to show it their implementations. */
|
||||||
|
ovs_be64 htonll(uint64_t);
|
||||||
|
uint64_t ntohll(ovs_be64);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* These macros may substitute for htons(), htonl(), and htonll() in contexts
|
/* These macros may substitute for htons(), htonl(), and htonll() in contexts
|
||||||
* where function calls are not allowed, such as case labels. They should not
|
* where function calls are not allowed, such as case labels. They should not
|
||||||
* be used elsewhere because all of them evaluate their argument many times. */
|
* be used elsewhere because all of them evaluate their argument many times. */
|
||||||
#ifdef WORDS_BIGENDIAN
|
#if defined(WORDS_BIGENDIAN) || __CHECKER__
|
||||||
#define CONSTANT_HTONS(VALUE) ((ovs_be16) (VALUE))
|
#define CONSTANT_HTONS(VALUE) ((OVS_FORCE ovs_be16) ((VALUE) & 0xffff))
|
||||||
#define CONSTANT_HTONL(VALUE) ((ovs_be32) (VALUE))
|
#define CONSTANT_HTONL(VALUE) ((OVS_FORCE ovs_be32) ((VALUE) & 0xffffffff))
|
||||||
#define CONSTANT_HTONLL(VALUE) ((ovs_be64) (VALUE))
|
#define CONSTANT_HTONLL(VALUE) \
|
||||||
|
((OVS_FORCE ovs_be64) ((VALUE) & UINT64_C(0xffffffffffffffff)))
|
||||||
#else
|
#else
|
||||||
#define CONSTANT_HTONS(VALUE) \
|
#define CONSTANT_HTONS(VALUE) \
|
||||||
(((((ovs_be16) (VALUE)) & 0xff00) >> 8) | \
|
(((((ovs_be16) (VALUE)) & 0xff00) >> 8) | \
|
||||||
|
@@ -18,6 +18,8 @@
|
|||||||
#include "csum.h"
|
#include "csum.h"
|
||||||
#include "unaligned.h"
|
#include "unaligned.h"
|
||||||
|
|
||||||
|
#ifndef __CHECKER__
|
||||||
|
|
||||||
/* Returns the IP checksum of the 'n' bytes in 'data'.
|
/* Returns the IP checksum of the 'n' bytes in 'data'.
|
||||||
*
|
*
|
||||||
* The return value has the same endianness as the data. That is, if 'data'
|
* The return value has the same endianness as the data. That is, if 'data'
|
||||||
@@ -109,3 +111,8 @@ recalc_csum32(ovs_be16 old_csum, ovs_be32 old_u32, ovs_be32 new_u32)
|
|||||||
return recalc_csum16(recalc_csum16(old_csum, old_u32, new_u32),
|
return recalc_csum16(recalc_csum16(old_csum, old_u32, new_u32),
|
||||||
old_u32 >> 16, new_u32 >> 16);
|
old_u32 >> 16, new_u32 >> 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else /* __CHECKER__ */
|
||||||
|
/* Making sparse happy with these functions also makes them unreadable, so
|
||||||
|
* don't bother to show it their implementations. */
|
||||||
|
#endif
|
||||||
|
@@ -673,7 +673,8 @@ netdev_linux_open(struct netdev_dev *netdev_dev_, int ethertype,
|
|||||||
protocol = (ethertype == NETDEV_ETH_TYPE_ANY ? ETH_P_ALL
|
protocol = (ethertype == NETDEV_ETH_TYPE_ANY ? ETH_P_ALL
|
||||||
: ethertype == NETDEV_ETH_TYPE_802_2 ? ETH_P_802_2
|
: ethertype == NETDEV_ETH_TYPE_802_2 ? ETH_P_802_2
|
||||||
: ethertype);
|
: ethertype);
|
||||||
netdev->fd = socket(PF_PACKET, SOCK_RAW, htons(protocol));
|
netdev->fd = socket(PF_PACKET, SOCK_RAW,
|
||||||
|
(OVS_FORCE int) htons(protocol));
|
||||||
if (netdev->fd < 0) {
|
if (netdev->fd < 0) {
|
||||||
error = errno;
|
error = errno;
|
||||||
goto error;
|
goto error;
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
/* Copyright (c) 2002-2009 InMon Corp. Licensed under the terms of the InMon sFlow licence: */
|
/* Copyright (c) 2002-2009 InMon Corp. Licensed under the terms of the InMon sFlow licence: */
|
||||||
/* http://www.inmon.com/technology/sflowlicense.txt */
|
/* http://www.inmon.com/technology/sflowlicense.txt */
|
||||||
|
|
||||||
|
#ifndef __CHECKER__ /* Don't run sparse on anything in this file. */
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "sflow_api.h"
|
#include "sflow_api.h"
|
||||||
|
|
||||||
@@ -830,3 +832,5 @@ static void sflError(SFLReceiver *receiver, char *msg)
|
|||||||
sfl_agent_error(receiver->agent, "receiver", msg);
|
sfl_agent_error(receiver->agent, "receiver", msg);
|
||||||
resetSampleCollector(receiver);
|
resetSampleCollector(receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* !__CHECKER__ */
|
||||||
|
@@ -156,6 +156,7 @@ put_32aligned_u64(ovs_32aligned_u64 *x, uint64_t value)
|
|||||||
x->lo = value;
|
x->lo = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef __CHECKER__
|
||||||
/* Returns the value of 'x'. */
|
/* Returns the value of 'x'. */
|
||||||
static inline ovs_be64
|
static inline ovs_be64
|
||||||
get_32aligned_be64(const ovs_32aligned_be64 *x)
|
get_32aligned_be64(const ovs_32aligned_be64 *x)
|
||||||
@@ -179,5 +180,11 @@ put_32aligned_be64(ovs_32aligned_be64 *x, ovs_be64 value)
|
|||||||
x->lo = value >> 32;
|
x->lo = value >> 32;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#else /* __CHECKER__ */
|
||||||
|
/* Making sparse happy with these functions also makes them unreadable, so
|
||||||
|
* don't bother to show it their implementations. */
|
||||||
|
ovs_be64 get_32aligned_be64(const ovs_32aligned_be64 *);
|
||||||
|
void put_32aligned_be64(ovs_32aligned_be64 *, ovs_be64);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* unaligned.h */
|
#endif /* unaligned.h */
|
||||||
|
@@ -252,7 +252,7 @@ sflow_choose_agent_address(const char *agent_device, const char *control_ip,
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
success:
|
success:
|
||||||
agent_addr->address.ip_v4.addr = in4.s_addr;
|
agent_addr->address.ip_v4.addr = (OVS_FORCE uint32_t) in4.s_addr;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2010 Nicira Networks.
|
* Copyright (c) 2010, 2011 Nicira Networks.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
int
|
int
|
||||||
main(void)
|
main(void)
|
||||||
{
|
{
|
||||||
|
#ifndef __CHECKER__
|
||||||
/* I picked some random numbers. */
|
/* I picked some random numbers. */
|
||||||
const uint16_t s = 0xc9bd;
|
const uint16_t s = 0xc9bd;
|
||||||
const uint32_t l = 0xffe56ae8;
|
const uint32_t l = 0xffe56ae8;
|
||||||
@@ -44,6 +45,9 @@ main(void)
|
|||||||
assert(ntohll(htonll(ll)) == ll);
|
assert(ntohll(htonll(ll)) == ll);
|
||||||
assert(CONSTANT_HTONLL(ntohll(ll)) == ll);
|
assert(CONSTANT_HTONLL(ntohll(ll)) == ll);
|
||||||
assert(ntohll(CONSTANT_HTONLL(ll)));
|
assert(ntohll(CONSTANT_HTONLL(ll)));
|
||||||
|
#else /* __CHECKER__ */
|
||||||
|
/* Making sparse happy with this code makes it unreadable, so don't bother. */
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user