/*
- * Copyright (c) 2011 Nicira Networks.
+ * Copyright (c) 2011, 2012, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "openvswitch/types.h"
#include <sys/uio.h>
+#include <stddef.h>
typedef unsigned short int sa_family_t;
typedef __socklen_t socklen_t;
int msg_flags;
};
+struct cmsghdr {
+ size_t cmsg_len;
+ int cmsg_level;
+ int cmsg_type;
+ unsigned char cmsg_data[];
+};
+
+#define __CMSG_ALIGNTO sizeof(size_t)
+#define CMSG_ALIGN(LEN) \
+ (((LEN) + __CMSG_ALIGNTO - 1) / __CMSG_ALIGNTO * __CMSG_ALIGNTO)
+#define CMSG_DATA(CMSG) ((CMSG)->cmsg_data)
+#define CMSG_LEN(LEN) (sizeof(struct cmsghdr) + (LEN))
+#define CMSG_SPACE(LEN) CMSG_ALIGN(CMSG_LEN(LEN))
+#define CMSG_FIRSTHDR(MSG) \
+ ((MSG)->msg_controllen ? (struct cmsghdr *) (MSG)->msg_control : NULL)
+#define CMSG_NXTHDR(MSG, CMSG) __cmsg_nxthdr(MSG, CMSG)
+
+static inline struct cmsghdr *
+__cmsg_nxthdr(struct msghdr *msg, struct cmsghdr *cmsg)
+{
+ size_t ofs = (char *) cmsg - (char *) msg->msg_control;
+ size_t next_ofs = ofs + CMSG_ALIGN(cmsg->cmsg_len);
+ return (next_ofs < msg->msg_controllen
+ ? (void *) ((char *) msg->msg_control + next_ofs)
+ : NULL);
+}
+
+enum {
+ SCM_RIGHTS = 1
+};
+
enum {
SOCK_DGRAM,
SOCK_RAW,
SO_SNDBUF,
SO_SNDLOWAT,
SO_SNDTIMEO,
- SO_TYPE
+ SO_TYPE,
+ SO_RCVBUFFORCE,
+ SO_ATTACH_FILTER
};
enum {