[kitten] 2 new revisions pushed by BrianK...@gmail.com on 2013-07-08 22:11 GMT

2 views
Skip to first unread message

kit...@googlecode.com

unread,
Jul 8, 2013, 6:11:34 PM7/8/13
to kitten-...@googlegroups.com
2 new revisions:

Revision: 83890872a898
Branch: default
Author: Brian Kocoloski <bko...@sandia.gov>
Date: Mon Jul 8 14:58:49 2013
Log: More UDP implementations and some bug fixes to support Portals
over UD...
http://code.google.com/p/kitten/source/detail?r=83890872a898

Revision: f700f8e1a868
Branch: default
Author: Brian Kocoloski <bko...@sandia.gov>
Date: Mon Jul 8 15:10:41 2013
Log: Merging
http://code.google.com/p/kitten/source/detail?r=f700f8e1a868

==============================================================================
Revision: 83890872a898
Branch: default
Author: Brian Kocoloski <bko...@sandia.gov>
Date: Mon Jul 8 14:58:49 2013
Log: More UDP implementations and some bug fixes to support Portals
over UDP. Simple put tests now pass
http://code.google.com/p/kitten/source/detail?r=83890872a898

Modified:
/drivers/net/e1000/e1000.c
/include/lwip/ip.h
/include/lwip/lwipopts.h
/include/lwip/mem.h
/include/lwip/opt.h
/include/lwip/sockets.h
/kernel/netdev.c

=======================================
--- /drivers/net/e1000/e1000.c Sun Jun 9 00:16:32 2013
+++ /drivers/net/e1000/e1000.c Mon Jul 8 14:58:49 2013
@@ -37,8 +37,8 @@


// Number of read/write descriptors
-#define NUM_RX_DESCRIPTORS 16
-#define NUM_TX_DESCRIPTORS 16
+#define NUM_RX_DESCRIPTORS 64
+#define NUM_TX_DESCRIPTORS 64


// E1000 Ethernet Controller Register Offsets
@@ -348,25 +348,11 @@
return 0;
}

-
-static err_t e1000_tx_poll(struct netif *netif, struct pbuf *pkt)
-{
+static err_t e1000_tx_send(struct netif *netif, char * buf, int len) {
e1000_device_t *dev = netif->state;
- struct pbuf *q;
- int count = 0;

- // Count the number of entries in the pbuf
- for (q = pkt; q != NULL ; q = q->next)
- ++count;
- if (count != 1) {
- printk(KERN_WARNING "E1000: trying to transmit pbuf with more than one
region, count=%d\n", count);
- return -1;
- }
-
- // printk("E1000: transmitting packet (%u bytes) [h=%u, t=%u]\n",
pkt->tot_len, mmio_read32(E1000_REG_TDH), dev->tx_tail);
-
- dev->tx_desc[dev->tx_tail]->address = (uint64_t) __pa(pkt->payload);
- dev->tx_desc[dev->tx_tail]->length = pkt->len;
+ dev->tx_desc[dev->tx_tail]->address = (uint64_t) __pa(buf);
+ dev->tx_desc[dev->tx_tail]->length = len;
dev->tx_desc[dev->tx_tail]->cmd = ((1 << 3) | (3));

// Update the tail so the hardware knows it's ready
@@ -378,8 +364,23 @@
while (!(dev->tx_desc[oldtail]->sta & 0xF)) { }

// printk("E1000: TX DONE: transmit status = 0x%01x\n",
(dev->tx_desc[oldtail]->sta & 0xF));
+ return 0;
+}
+
+// BJK: assemble a single buffer from the queues in pkt
+static err_t e1000_tx_poll(struct netif *netif, struct pbuf *pkt) {
+ int off;
+ char buf[pkt->tot_len];
+ struct pbuf * q;
+
+ // Count the number of entries in the pbuf
+ off = 0;
+ for (q = pkt; q != NULL ; q = q->next) {
+ memcpy(buf + off, q->payload, q->len);
+ off += q->len;
+ }

- return 0;
+ return e1000_tx_send(netif, buf, pkt->tot_len);
}


@@ -421,7 +422,7 @@
printk(KERN_WARNING "Unable to allocate pbuf! dropping packet\n");
} else {
memcpy(p->payload, pkt, pktlen);
- p->tot_len = pktlen;
+ p->len = p->tot_len = pktlen;
p->next = 0x0;

// send the packet to higher layers for parsing
@@ -443,11 +444,11 @@


// ICR bits
-#define E1000_ICR_TXCW 0x00000001 // Transmit descirptor written back
+#define E1000_ICR_TXCW 0x00000001 // Transmit descriptor written back
#define E1000_ICR_TXQE 0x00000002 // Transmit queue empty
#define E1000_ICR_LSC 0x00000004 // Link status change
#define E1000_ICR_RXSEQ 0x00000008 // Receive sequence error
-#define E1000_ICR_RXDMT0 0x00000010 // Receive descirptor minimum
threshold met
+#define E1000_ICR_RXDMT0 0x00000010 // Receive descriptor minimum
threshold met
#define E1000_ICR_RXO 0x00000040 // Receiver overrun
#define E1000_ICR_RXT0 0x00000080 // Receiver timer interrupt
#define E1000_ICR_MDAC 0x00000200 // MDIO access complete
=======================================
--- /include/lwip/ip.h Mon Apr 1 14:03:40 2013
+++ /include/lwip/ip.h Mon Jul 8 14:58:49 2013
@@ -101,13 +101,13 @@
* Option flags per-socket. These are the same like SO_XXX.
*/
/*#define SOF_DEBUG 0x01U Unimplemented: turn on debugging info
recording */
-#define SOF_ACCEPTCONN 0x02U /* socket has had listen() */
-#define SOF_REUSEADDR 0x04U /* allow local address reuse */
-#define SOF_KEEPALIVE 0x08U /* keep connections alive */
+#define SOF_ACCEPTCONN 30 /* socket has had listen() */
+#define SOF_REUSEADDR 2 /* allow local address reuse */
+#define SOF_KEEPALIVE 9 /* keep connections alive */
/*#define SOF_DONTROUTE 0x10U Unimplemented: just use interface
addresses */
-#define SOF_BROADCAST 0x20U /* permit to send and to receive
broadcast messages (see IP_SOF_BROADCAST option) */
+#define SOF_BROADCAST 6 /* permit to send and to receive broadcast
messages (see IP_SOF_BROADCAST option) */
/*#define SOF_USELOOPBACK 0x40U Unimplemented: bypass hardware when
possible */
-#define SOF_LINGER 0x80U /* linger on close if data present */
+#define SOF_LINGER 13 /* linger on close if data present */
/*#define SOF_OOBINLINE 0x0100U Unimplemented: leave received OOB
data in line */
/*#define SOF_REUSEPORT 0x0200U Unimplemented: allow local address &
port reuse */

=======================================
--- /include/lwip/lwipopts.h Thu Jun 13 23:09:00 2013
+++ /include/lwip/lwipopts.h Mon Jul 8 14:58:49 2013
@@ -3,6 +3,10 @@

#define SYS_LIGHTWEIGHT_PROT 1
#define NO_SYS 0
+#define MEM_LIBC_MALLOC 1
+#define MEMP_MEM_MALLOC 1
+#define LWIP_SO_SNDBUF 1
+#define LWIP_SO_RCVBUF 1

#ifdef CONFIG_LWIP_SOCKET
#define LWIP_SOCKET 1
@@ -16,6 +20,7 @@

#ifdef CONFIG_LWIP_ARP
#define LWIP_ARP 1
+#define ARP_QUEUEING 1
#else
#define LWIP_ARP 0
#define ARP_QUEUEING 0
@@ -29,11 +34,13 @@
#endif

// We have struct timeval
-#define LWIP_TIMEVAL_PRIVATE 0
+//#define LWIP_TIMEVAL_PRIVATE 0

-#define LWIP_DEBUG 0
-#define LWIP_DBG_MIN_LEVEL 1
+#define LWIP_DEBUG 1
+#define IP_REASS_DEBUG LWIP_DBG_OFF
+#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL
#define IP_DEBUG LWIP_DBG_OFF
+#define UDP_DEBUG LWIP_DBG_OFF
#define TCP_DEBUG LWIP_DBG_OFF
#define TCPIP_DEBUG LWIP_DBG_OFF
#define TCP_INPUT_DEBUG LWIP_DBG_OFF
=======================================
--- /include/lwip/mem.h Mon Apr 1 14:03:40 2013
+++ /include/lwip/mem.h Mon Jul 8 14:58:49 2013
@@ -51,13 +51,13 @@
* allow these defines to be overridden.
*/
#ifndef mem_free
-#define mem_free free
+#define mem_free kmem_free
#endif
#ifndef mem_malloc
-#define mem_malloc malloc
+#define mem_malloc kmem_alloc
#endif
#ifndef mem_calloc
-#define mem_calloc calloc
+#define mem_calloc kmem_calloc
#endif
/* Since there is no C library allocation function to shrink memory without
moving it, define this to nothing. */
=======================================
--- /include/lwip/opt.h Mon Apr 1 14:03:40 2013
+++ /include/lwip/opt.h Mon Jul 8 14:58:49 2013
@@ -1460,6 +1460,13 @@
#define LWIP_SO_SNDTIMEO 0
#endif

+/**
+ * LWIP_SO_SENDBUF==1: Enable SO_SNDBUF processing.
+ */
+#ifndef LWIP_SO_SNDBUF
+#define LWIP_SO_SNDBUF 0
+#endif
+
/**
* LWIP_SO_RCVTIMEO==1: Enable receive timeout for sockets/netconns and
* SO_RCVTIMEO processing.
=======================================
--- /include/lwip/sockets.h Wed Jun 26 15:02:29 2013
+++ /include/lwip/sockets.h Mon Jul 8 14:58:49 2013
@@ -117,33 +117,32 @@
/*
* Option flags per-socket. These must match the SOF_ flags in ip.h
(checked in init.c)
*/
-#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info
recording */
-#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
-#define SO_REUSEADDR 0x0004 /* Allow local address reuse */
-#define SO_KEEPALIVE 0x0008 /* keep connections alive */
-#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface
addresses */
-#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast
messages (see IP_SOF_BROADCAST option) */
-#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when
possible */
-#define SO_LINGER 0x0080 /* linger on close if data present */
-#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data
in line */
-#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address &
port reuse */
+#define SO_DEBUG 1 /* Unimplemented: turn on debugging info
recording */
+#define SO_REUSEADDR 2 /* Allow local address reuse */
+#define SO_TYPE 3
+#define SO_ERROR 4
+#define SO_DONTROUTE 5 /* Unimplemented: just use interface addresses
*/
+#define SO_BROADCAST 6 /* permit to send and to receive broadcast
messages (see IP_SOF_BROADCAST option) */
+#define SO_SNDBUF 7
+#define SO_RCVBUF 8
+#define SO_KEEPALIVE 9 /* keep connections alive */
+#define SO_OOBINLINE 10 /* Unimplemented: leave received OOB data in
line */
+#define SO_NO_CHECK 11
+#define SO_LINGER 13 /* linger on close if data present */
+#define SO_REUSEPORT 15 /* Unimplemented: allow local address & port
reuse */
+#define SO_RCVLOWAT 18
+#define SO_SNDLOWAT 19
+#define SO_RCVTIMEO 20
+#define SO_SNDTIMEO 21
+#define SO_ACCEPTCONN 30 /* socket has had listen() */
+
+
+#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when
possible */
+#define SO_CONTIMEO 0x10000
+

#define SO_DONTLINGER ((int)(~SO_LINGER))

-/*
- * Additional options, not kept in so_options.
- */
-#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */
-#define SO_RCVBUF 0x1002 /* receive buffer size */
-#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */
-#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */
-#define SO_SNDTIMEO 0x1005 /* Unimplemented: send timeout */
-#define SO_RCVTIMEO 0x1006 /* receive timeout */
-#define SO_ERROR 0x1007 /* get error status and clear */
-#define SO_TYPE 0x1008 /* get socket type */
-#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */
-#define SO_NO_CHECK 0x100a /* don't create UDP checksum */
-

/*
* Structure used for manipulating linger option.
@@ -156,7 +155,7 @@
/*
* Level number for (get/set)sockopt() to apply to socket itself.
*/
-#define SOL_SOCKET 0xfff /* options for socket level */
+#define SOL_SOCKET 1 /* options for socket level */


#define AF_UNSPEC 0
@@ -179,11 +178,11 @@
#define IPPROTO_UDPLITE 136

/* Flags we can use with send and recv. */
-#define MSG_PEEK 0x01 /* Peeks at an incoming message */
-#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the
function block until the full amount of data requested can be returned */
-#define MSG_OOB 0x04 /* Unimplemented: Requests out-of-band
data. The significance and semantics of out-of-band data are
protocol-specific */
-#define MSG_DONTWAIT 0x08 /* Nonblocking i/o for this operation only
*/
-#define MSG_MORE 0x10 /* Sender will send more */
+#define MSG_OOB 0x01 /* Unimplemented: Requests out-of-band data.
The significance and semantics of out-of-band data are protocol-specific */
+#define MSG_PEEK 0x02 /* Peeks at an incoming message */
+#define MSG_WAITALL 0x100 /* Unimplemented: Requests that the
function block until the full amount of data requested can be returned */
+#define MSG_DONTWAIT 0x40 /* Nonblocking i/o for this operation only */
+#define MSG_MORE 0x8000 /* Sender will send more */


/*
@@ -363,7 +362,7 @@
/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided
* by your system, set this to 0 and include <sys/time.h> in cc.h */
#ifndef LWIP_TIMEVAL_PRIVATE
-#define LWIP_TIMEVAL_PRIVATE 1
+#define LWIP_TIMEVAL_PRIVATE 0
#endif

#if LWIP_TIMEVAL_PRIVATE
=======================================
--- /kernel/netdev.c Wed Jun 26 15:02:29 2013
+++ /kernel/netdev.c Mon Jul 8 14:58:49 2013
@@ -175,7 +175,7 @@
}

static int
-translate_sockaddr(
+translate_sockaddr_to_lwk(
uint8_t * buf,
size_t len
)
@@ -199,6 +199,31 @@

return 0;
}
+
+static int
+translate_sockaddr_to_linux(
+ uint8_t * buf,
+ size_t len
+)
+{
+ typedef unsigned short sa_family_t;
+ struct linux_sockaddr {
+ sa_family_t sa_family;
+ char sa_data[14];
+ };
+
+ struct linux_sockaddr addr;
+
+ if ( len < sizeof(struct sockaddr_in) )
+ return -1;
+
+ addr.sa_family = ((struct sockaddr *)buf)->sa_family;
+ memcpy(addr.sa_data, ((struct sockaddr *)buf)->sa_data, 14);
+
+ memcpy(buf, &addr, sizeof(struct linux_sockaddr));
+
+ return 0;
+}

static unsigned long
sys_bind(
@@ -207,6 +232,7 @@
size_t len
)
{
+ int ret;
const int conn = lwip_from_fd( sock );
if( sock < 0 )
return -EBADF;
@@ -221,13 +247,17 @@
return -EFAULT;
}

- if( translate_sockaddr( buf, len ) < 0 )
+ if( translate_sockaddr_to_lwk( buf, len ) < 0 )
{
printk( "%s: bad user address translation %p\n", __func__, (void*) addr
);
return -EFAULT;
}

- return lwip_bind( conn, (struct sockaddr *) buf, len );
+ ret = lwip_bind( conn, (struct sockaddr *) buf, len );
+ if (ret == -1) {
+ ret = -lwip_lasterr(conn);
+ }
+ return ret;
}


@@ -238,6 +268,7 @@
size_t len
)
{
+ int ret;
const int conn = lwip_from_fd( sock );
if( sock < 0 )
return -EBADF;
@@ -252,13 +283,17 @@
return -EFAULT;
}

- if( translate_sockaddr( buf, len ) < 0 )
+ if( translate_sockaddr_to_lwk( buf, len ) < 0 )
{
printk( "%s: bad user address %p translation\n", __func__, (void*) addr
);
return -EFAULT;
}

- return lwip_connect( conn, (struct sockaddr *) buf, len );
+ ret = lwip_connect( conn, (struct sockaddr *) buf, len );
+ if (ret == -1) {
+ ret = -lwip_lasterr(conn);
+ }
+ return ret;
}

static int
@@ -457,8 +492,27 @@
socklen_t addrlen
)
{
- int ret = lwip_sendto(lwip_from_fd(sockfd), buf, len, flags,
dest_addr, addrlen);
+ struct sockaddr * dest;
+ uint8_t kbuf[addrlen];
+ char databuf[len];

+ if (copy_from_user(&databuf, buf, len)) {
+ printk("%s: bad user address %p\n", __func__, (void*) dest_addr);
+ return -EFAULT;
+ }
+
+ if (copy_from_user(&kbuf, dest_addr, addrlen)) {
+ printk("%s: bad user address %p\n", __func__, (void*) dest_addr);
+ return -EFAULT;
+ }
+
+ if (translate_sockaddr_to_lwk(kbuf, sizeof(struct sockaddr)) < 0) {
+ printk( "%s: bad user address %p translation\n", __func__, (void*) kbuf);
+ return -EFAULT;
+ }
+ dest = (struct sockaddr *)kbuf;
+
+ int ret = lwip_sendto(lwip_from_fd(sockfd), (void *)databuf, len,
flags, dest, addrlen);
if (ret == -1) {
ret = -lwip_lasterr(lwip_from_fd(sockfd));
}
@@ -476,12 +530,25 @@
int i;
ssize_t written, total;
struct iovec * vec;
+ struct sockaddr * dest;
+ uint8_t kbuf[msg->msg_namelen];
+
+ if (copy_from_user(&kbuf, msg->msg_name, msg->msg_namelen)) {
+ printk("%s: bad user address %p\n", __func__, (void*) msg->msg_name);
+ return -EFAULT;
+ }
+
+ if (translate_sockaddr_to_lwk(kbuf, sizeof(struct sockaddr)) < 0) {
+ printk( "%s: bad user address %p translation\n", __func__, (void*) kbuf);
+ return -EFAULT;
+ }
+ dest = (struct sockaddr *)kbuf;

total = 0;
for (i = 0; i < msg->msg_iovlen; i++) {
vec = &(msg->msg_iov[i]);
written = lwip_sendto(lwip_from_fd(sockfd), vec->iov_base,
vec->iov_len, flags,
- (struct sockaddr *)msg->msg_name, msg->msg_namelen);
+ dest, msg->msg_namelen);

switch (written) {
case -1:
@@ -507,11 +574,26 @@
socklen_t * addrlen
)
{
- int ret = lwip_recvfrom(lwip_from_fd(sockfd), buf, len,flags,
src_addr, addrlen);
+ char databuf[len];
+ uint8_t kbuf[sizeof(struct sockaddr)];

+ int ret = lwip_recvfrom(lwip_from_fd(sockfd), databuf, len, flags,
(struct sockaddr *)kbuf, addrlen);
if (ret == -1) {
ret = -lwip_lasterr(lwip_from_fd(sockfd));
- }
+ } else {
+ if (copy_to_user(buf, databuf, len)) {
+ return -EFAULT;
+ }
+
+ if (translate_sockaddr_to_linux(kbuf, sizeof(struct sockaddr)) < 0) {
+ printk( "%s: bad user address %p translation\n", __func__, (void*)
kbuf);
+ return -EFAULT;
+ }
+
+ if (copy_to_user(src_addr, kbuf, *addrlen)) {
+ return -EFAULT;
+ }
+ }

return ret;
}
@@ -531,7 +613,7 @@
for (i = 0; i < msg->msg_iovlen; i++) {
vec = &(msg->msg_iov[i]);
read = lwip_recvfrom(lwip_from_fd(sockfd), vec->iov_base,
vec->iov_len, flags,
- (struct sockaddr *)msg->msg_name, &(msg->msg_namelen));
+ msg->msg_name, &(msg->msg_namelen));

switch (read) {
case -1:

==============================================================================
Revision: f700f8e1a868
Branch: default
Author: Brian Kocoloski <bko...@sandia.gov>
Date: Mon Jul 8 15:10:41 2013
Log: Merging
http://code.google.com/p/kitten/source/detail?r=f700f8e1a868

Modified:
/include/lwip/sockets.h

=======================================
--- /include/lwip/sockets.h Wed Jul 3 07:10:27 2013
+++ /include/lwip/sockets.h Mon Jul 8 15:10:41 2013
@@ -114,33 +114,32 @@
/*
* Option flags per-socket. These must match the SOF_ flags in ip.h
(checked in init.c)
*/
-#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info
recording */
-#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
-#define SO_REUSEADDR 0x0004 /* Allow local address reuse */
-#define SO_KEEPALIVE 0x0008 /* keep connections alive */
-#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface
addresses */
-#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast
messages (see IP_SOF_BROADCAST option) */
-#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when
possible */
-#define SO_LINGER 0x0080 /* linger on close if data present */
-#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data
in line */
-#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address &
port reuse */
+#define SO_DEBUG 1 /* Unimplemented: turn on debugging info
recording */
+#define SO_REUSEADDR 2 /* Allow local address reuse */
+#define SO_TYPE 3
+#define SO_ERROR 4
+#define SO_DONTROUTE 5 /* Unimplemented: just use interface addresses
*/
+#define SO_BROADCAST 6 /* permit to send and to receive broadcast
messages (see IP_SOF_BROADCAST option) */
+#define SO_SNDBUF 7
+#define SO_RCVBUF 8
+#define SO_KEEPALIVE 9 /* keep connections alive */
+#define SO_OOBINLINE 10 /* Unimplemented: leave received OOB data in
line */
+#define SO_NO_CHECK 11
+#define SO_LINGER 13 /* linger on close if data present */
+#define SO_REUSEPORT 15 /* Unimplemented: allow local address & port
reuse */
+#define SO_RCVLOWAT 18
+#define SO_SNDLOWAT 19
+#define SO_RCVTIMEO 20
+#define SO_SNDTIMEO 21
+#define SO_ACCEPTCONN 30 /* socket has had listen() */
+
+
+#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when
possible */
+#define SO_CONTIMEO 0x10000
+

#define SO_DONTLINGER ((int)(~SO_LINGER))

-/*
- * Additional options, not kept in so_options.
- */
-#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */
-#define SO_RCVBUF 0x1002 /* receive buffer size */
-#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */
-#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */
-#define SO_SNDTIMEO 0x1005 /* Unimplemented: send timeout */
-#define SO_RCVTIMEO 0x1006 /* receive timeout */
-#define SO_ERROR 0x1007 /* get error status and clear */
-#define SO_TYPE 0x1008 /* get socket type */
-#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */
-#define SO_NO_CHECK 0x100a /* don't create UDP checksum */
-

/*
* Structure used for manipulating linger option.
@@ -153,7 +152,7 @@
/*
* Level number for (get/set)sockopt() to apply to socket itself.
*/
-#define SOL_SOCKET 0xfff /* options for socket level */
+#define SOL_SOCKET 1 /* options for socket level */


#define AF_UNSPEC 0
@@ -176,11 +175,11 @@
#define IPPROTO_UDPLITE 136

/* Flags we can use with send and recv. */
-#define MSG_PEEK 0x01 /* Peeks at an incoming message */
-#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the
function block until the full amount of data requested can be returned */
-#define MSG_OOB 0x04 /* Unimplemented: Requests out-of-band
data. The significance and semantics of out-of-band data are
protocol-specific */
-#define MSG_DONTWAIT 0x08 /* Nonblocking i/o for this operation only
*/
-#define MSG_MORE 0x10 /* Sender will send more */
+#define MSG_OOB 0x01 /* Unimplemented: Requests out-of-band data.
The significance and semantics of out-of-band data are protocol-specific */
+#define MSG_PEEK 0x02 /* Peeks at an incoming message */
+#define MSG_WAITALL 0x100 /* Unimplemented: Requests that the
function block until the full amount of data requested can be returned */
+#define MSG_DONTWAIT 0x40 /* Nonblocking i/o for this operation only */
+#define MSG_MORE 0x8000 /* Sender will send more */


/*
@@ -360,7 +359,7 @@
/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided
* by your system, set this to 0 and include <sys/time.h> in cc.h */
#ifndef LWIP_TIMEVAL_PRIVATE
-#define LWIP_TIMEVAL_PRIVATE 1
+#define LWIP_TIMEVAL_PRIVATE 0
#endif

#if LWIP_TIMEVAL_PRIVATE
Reply all
Reply to author
Forward
0 new messages