git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ofproto: Fix potential leak during flow mods.
[sliver-openvswitch.git]
/
lib
/
socket-util.c
diff --git
a/lib/socket-util.c
b/lib/socket-util.c
index
f7d2d0f
..
aa0c719
100644
(file)
--- a/
lib/socket-util.c
+++ b/
lib/socket-util.c
@@
-39,7
+39,7
@@
#include "poll-loop.h"
#include "util.h"
#include "vlog.h"
#include "poll-loop.h"
#include "util.h"
#include "vlog.h"
-#if
AF_PACKET && LINUX_DATAPATH
+#if
def __linux__
#include <linux/if_packet.h>
#endif
#ifdef HAVE_NETLINK
#include <linux/if_packet.h>
#endif
#ifdef HAVE_NETLINK
@@
-51,9
+51,11
@@
VLOG_DEFINE_THIS_MODULE(socket_util);
/* #ifdefs make it a pain to maintain code: you have to try to build both ways.
* Thus, this file compiles all of the code regardless of the target, by
/* #ifdefs make it a pain to maintain code: you have to try to build both ways.
* Thus, this file compiles all of the code regardless of the target, by
- * writing "if (LINUX_DATAPATH)" instead of "#ifdef __linux__". */
-#ifndef LINUX_DATAPATH
-#define LINUX_DATAPATH 0
+ * writing "if (LINUX)" instead of "#ifdef __linux__". */
+#ifdef __linux__
+#define LINUX 1
+#else
+#define LINUX 0
#endif
#ifndef O_DIRECTORY
#endif
#ifndef O_DIRECTORY
@@
-118,14
+120,22
@@
set_dscp(int fd, uint8_t dscp)
success = false;
val = dscp << 2;
if (setsockopt(fd, IPPROTO_IP, IP_TOS, &val, sizeof val)) {
success = false;
val = dscp << 2;
if (setsockopt(fd, IPPROTO_IP, IP_TOS, &val, sizeof val)) {
+#ifndef _WIN32
if (sock_errno() != ENOPROTOOPT) {
if (sock_errno() != ENOPROTOOPT) {
+#else
+ if (sock_errno() != WSAENOPROTOOPT) {
+#endif
return sock_errno();
}
} else {
success = true;
}
if (setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, &val, sizeof val)) {
return sock_errno();
}
} else {
success = true;
}
if (setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, &val, sizeof val)) {
+#ifndef _WIN32
if (sock_errno() != ENOPROTOOPT) {
if (sock_errno() != ENOPROTOOPT) {
+#else
+ if (sock_errno() != WSAENOPROTOOPT) {
+#endif
return sock_errno();
}
} else {
return sock_errno();
}
} else {
@@
-292,7
+302,7
@@
drain_rcvbuf(int fd)
*
* On other Unix-like OSes, MSG_TRUNC has no effect in the flags
* argument. */
*
* On other Unix-like OSes, MSG_TRUNC has no effect in the flags
* argument. */
- char buffer[LINUX
_DATAPATH
? 1 : 2048];
+ char buffer[LINUX ? 1 : 2048];
ssize_t n_bytes = recv(fd, buffer, sizeof buffer,
MSG_TRUNC | MSG_DONTWAIT);
if (n_bytes <= 0 || n_bytes >= rcvbuf) {
ssize_t n_bytes = recv(fd, buffer, sizeof buffer,
MSG_TRUNC | MSG_DONTWAIT);
if (n_bytes <= 0 || n_bytes >= rcvbuf) {
@@
-350,7
+360,7
@@
shorten_name_via_proc(const char *name, char short_name[MAX_UN_LEN + 1],
int dirfd;
int len;
int dirfd;
int len;
- if (!LINUX
_DATAPATH
) {
+ if (!LINUX) {
return ENAMETOOLONG;
}
return ENAMETOOLONG;
}
@@
-1146,7
+1156,7
@@
describe_sockaddr(struct ds *string, int fd,
}
}
#endif
}
}
#endif
-#if
AF_PACKET && LINUX_DATAPATH
+#if
__linux__
else if (ss.ss_family == AF_PACKET) {
struct sockaddr_ll sll;
else if (ss.ss_family == AF_PACKET) {
struct sockaddr_ll sll;
@@
-1176,7
+1186,7
@@
describe_sockaddr(struct ds *string, int fd,
}
}
-#ifdef
LINUX_DATAPATH
+#ifdef
__linux__
static void
put_fd_filename(struct ds *string, int fd)
{
static void
put_fd_filename(struct ds *string, int fd)
{
@@
-1221,7
+1231,7
@@
describe_fd(int fd)
: S_ISFIFO(s.st_mode) ? "FIFO"
: S_ISLNK(s.st_mode) ? "symbolic link"
: "unknown"));
: S_ISFIFO(s.st_mode) ? "FIFO"
: S_ISLNK(s.st_mode) ? "symbolic link"
: "unknown"));
-#ifdef
LINUX_DATAPATH
+#ifdef
__linux__
put_fd_filename(&string, fd);
#endif
}
put_fd_filename(&string, fd);
#endif
}