mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-06 12:33:44 +02:00
added lwip unix port lib files
This commit is contained in:
parent
bbdb8eb0de
commit
02d5a31822
13 changed files with 774 additions and 91 deletions
15
ext/contrib/README.md
Normal file
15
ext/contrib/README.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
You are reading this file because you want to build a new copy of the LwIP library for
|
||||||
|
use in ZeroTier.
|
||||||
|
|
||||||
|
Subdirectories:
|
||||||
|
|
||||||
|
ports/ -- contains ports for various architectures (for our purposes, unix)
|
||||||
|
|
||||||
|
In order for the Network Containers feature to work in ZeroTier, a copy of the LwIP libary
|
||||||
|
is needed since we dynamically load it into memory. You can build a new copy of the libary
|
||||||
|
by going to /contrib/ports/unix/proj/lib and running make.
|
||||||
|
|
||||||
|
This will generate: liblwip.so
|
||||||
|
|
||||||
|
You can enable LwIP debug traces by adding the flag -DLWIP_DEBUG
|
||||||
|
See additional debug info here: http://lwip.wikia.com/wiki/Debugging_lwIP
|
106
ext/contrib/ports/unix/proj/lib/Makefile
Normal file
106
ext/contrib/ports/unix/proj/lib/Makefile
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
# are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer in the documentation
|
||||||
|
# and/or other materials provided with the distribution.
|
||||||
|
# 3. The name of the author may not be used to endorse or promote products
|
||||||
|
# derived from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||||
|
# SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
# OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# This file is part of the lwIP TCP/IP stack.
|
||||||
|
#
|
||||||
|
# Author: Adam Dunkels <adam@sics.se>
|
||||||
|
#
|
||||||
|
|
||||||
|
CONTRIBDIR=../../../..
|
||||||
|
LWIPARCH=$(CONTRIBDIR)/ports/unix
|
||||||
|
|
||||||
|
#Set this to where you have the lwip core module checked out from CVS
|
||||||
|
#default assumes it's a dir named lwip at the same level as the contrib module
|
||||||
|
LWIPDIR=$(CONTRIBDIR)/../lwip/src
|
||||||
|
|
||||||
|
|
||||||
|
CCDEP=gcc
|
||||||
|
CC=gcc
|
||||||
|
CFLAGS=-g -Wall -DIPv4 -fPIC
|
||||||
|
|
||||||
|
CFLAGS:=$(CFLAGS) \
|
||||||
|
-I$(LWIPDIR)/include -I$(LWIPARCH)/include -I$(LWIPDIR)/include/ipv4 \
|
||||||
|
-I$(LWIPDIR) -I.
|
||||||
|
|
||||||
|
|
||||||
|
# COREFILES, CORE4FILES: The minimum set of files needed for lwIP.
|
||||||
|
COREFILES=$(LWIPDIR)/core/mem.c $(LWIPDIR)/core/memp.c $(LWIPDIR)/core/netif.c \
|
||||||
|
$(LWIPDIR)/core/pbuf.c $(LWIPDIR)/core/raw.c $(LWIPDIR)/core/stats.c \
|
||||||
|
$(LWIPDIR)/core/sys.c $(LWIPDIR)/core/tcp.c $(LWIPDIR)/core/tcp_in.c \
|
||||||
|
$(LWIPDIR)/core/tcp_out.c $(LWIPDIR)/core/udp.c $(LWIPDIR)/core/dhcp.c \
|
||||||
|
$(LWIPDIR)/core/init.c $(LWIPDIR)/core/timers.c $(LWIPDIR)/core/def.c
|
||||||
|
CORE4FILES=$(wildcard $(LWIPDIR)/core/ipv4/*.c) $(LWIPDIR)/core/ipv4/inet.c \
|
||||||
|
$(LWIPDIR)/core/ipv4/inet_chksum.c
|
||||||
|
|
||||||
|
# SNMPFILES: Extra SNMPv1 agent
|
||||||
|
SNMPFILES=$(LWIPDIR)/core/snmp/asn1_dec.c $(LWIPDIR)/core/snmp/asn1_enc.c \
|
||||||
|
$(LWIPDIR)/core/snmp/mib2.c $(LWIPDIR)/core/snmp/mib_structs.c \
|
||||||
|
$(LWIPDIR)/core/snmp/msg_in.c $(LWIPDIR)/core/snmp/msg_out.c
|
||||||
|
|
||||||
|
# APIFILES: The files which implement the sequential and socket APIs.
|
||||||
|
APIFILES=$(LWIPDIR)/api/api_lib.c $(LWIPDIR)/api/api_msg.c $(LWIPDIR)/api/tcpip.c \
|
||||||
|
$(LWIPDIR)/api/err.c $(LWIPDIR)/api/sockets.c $(LWIPDIR)/api/netbuf.c $(LWIPDIR)/api/netdb.c
|
||||||
|
|
||||||
|
# NETIFFILES: Files implementing various generic network interface functions.'
|
||||||
|
NETIFFILES=$(LWIPDIR)/netif/etharp.c $(LWIPDIR)/netif/slipif.c
|
||||||
|
|
||||||
|
# NETIFFILES: Add PPP netif
|
||||||
|
NETIFFILES+=$(LWIPDIR)/netif/ppp/auth.c $(LWIPDIR)/netif/ppp/chap.c \
|
||||||
|
$(LWIPDIR)/netif/ppp/chpms.c $(LWIPDIR)/netif/ppp/fsm.c \
|
||||||
|
$(LWIPDIR)/netif/ppp/ipcp.c $(LWIPDIR)/netif/ppp/lcp.c \
|
||||||
|
$(LWIPDIR)/netif/ppp/magic.c $(LWIPDIR)/netif/ppp/md5.c \
|
||||||
|
$(LWIPDIR)/netif/ppp/pap.c $(LWIPDIR)/netif/ppp/ppp.c \
|
||||||
|
$(LWIPDIR)/netif/ppp/randm.c $(LWIPDIR)/netif/ppp/vj.c
|
||||||
|
|
||||||
|
# ARCHFILES: Architecture specific files.
|
||||||
|
ARCHFILES=$(wildcard $(LWIPARCH)/*.c $(LWIPARCH)tapif.c $(LWIPARCH)/netif/list.c $(LWIPARCH)/netif/tcpdump.c)
|
||||||
|
|
||||||
|
|
||||||
|
# LWIPFILES: All the above.
|
||||||
|
LWIPFILES=$(COREFILES) $(CORE4FILES) $(SNMPFILES) $(APIFILES) $(NETIFFILES) $(ARCHFILES)
|
||||||
|
LWIPFILESW=$(wildcard $(LWIPFILES))
|
||||||
|
LWIPOBJS=$(notdir $(LWIPFILESW:.c=.o))
|
||||||
|
|
||||||
|
LWIPLIB=liblwip.so
|
||||||
|
|
||||||
|
%.o:
|
||||||
|
$(CC) $(CFLAGS) -c $(<:.o=.c)
|
||||||
|
|
||||||
|
all: $(LWIPLIB)
|
||||||
|
.PHONY: all
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o $(LWIPLIB) *.s .depend* *.core core
|
||||||
|
|
||||||
|
depend dep: .depend
|
||||||
|
|
||||||
|
include .depend
|
||||||
|
|
||||||
|
$(LWIPLIB): $(LWIPOBJS) unixlib.o
|
||||||
|
$(CC) -g -nostartfiles -shared -o $@ $^
|
||||||
|
|
||||||
|
.depend: unixlib.c $(LWIPFILES)
|
||||||
|
$(CCDEP) $(CFLAGS) -MM $^ > .depend || rm -f .depend
|
31
ext/contrib/ports/unix/proj/lib/README
Normal file
31
ext/contrib/ports/unix/proj/lib/README
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
This directory contains an example of how to compile lwIP as a self
|
||||||
|
initialising shared library on Linux.
|
||||||
|
|
||||||
|
Some brief instructions:
|
||||||
|
|
||||||
|
* Compile the code:
|
||||||
|
|
||||||
|
> make clean all
|
||||||
|
|
||||||
|
This should produce liblwip4unixlib.so. This is the shared library.
|
||||||
|
|
||||||
|
* Link an application against the shared library
|
||||||
|
|
||||||
|
If you're using gcc you can do this by including -llwip4unixlib in
|
||||||
|
your link command.
|
||||||
|
|
||||||
|
* Run your application
|
||||||
|
|
||||||
|
Ensure that LD_LIBRARY_PATH includes the directory that contains
|
||||||
|
liblwip4unixlib.so (ie. this directory)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
If you are unsure about shared libraries and libraries on linux in
|
||||||
|
general, you might find this HOWTO useful:
|
||||||
|
|
||||||
|
<http://www.tldp.org/HOWTO/Program-Library-HOWTO/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Kieran Mansley, October 2002.
|
468
ext/contrib/ports/unix/proj/lib/lwipopts.h
Normal file
468
ext/contrib/ports/unix/proj/lib/lwipopts.h
Normal file
|
@ -0,0 +1,468 @@
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
*
|
||||||
|
* lwIP Options Configuration
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||||
|
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
* OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This file is part of the lwIP TCP/IP stack.
|
||||||
|
*
|
||||||
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef __LWIPOPTS_H__
|
||||||
|
#define __LWIPOPTS_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Include user defined options first. Anything not defined in these files
|
||||||
|
* will be set to standard values. Override anything you dont like!
|
||||||
|
*/
|
||||||
|
#include "lwipopts.h"
|
||||||
|
#include "lwip/debug.h"
|
||||||
|
|
||||||
|
|
||||||
|
//#define LWIP_DEBUG 0
|
||||||
|
//#define TCP_DEBUG LWIP_DBG_OFF
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
#define LWIP_MALLOC_MEMPOOL 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define LWIP_CHECKSUM_ON_COPY 1
|
||||||
|
|
||||||
|
#define TCP_OVERSIZE TCP_MSS
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TCP_SND_QUEUELEN
|
||||||
|
#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//#define TCP_WND
|
||||||
|
|
||||||
|
|
||||||
|
//#define PBUF_POOL_BUFSIZE 2048
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
---------------------------------- Timers --------------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* these are originally defined in tcp_impl.h */
|
||||||
|
#ifndef TCP_TMR_INTERVAL
|
||||||
|
/* The TCP timer interval in milliseconds. */
|
||||||
|
#define TCP_TMR_INTERVAL 25
|
||||||
|
#endif /* TCP_TMR_INTERVAL */
|
||||||
|
|
||||||
|
#ifndef TCP_FAST_INTERVAL
|
||||||
|
/* the fine grained timeout in milliseconds */
|
||||||
|
#define TCP_FAST_INTERVAL TCP_TMR_INTERVAL
|
||||||
|
#endif /* TCP_FAST_INTERVAL */
|
||||||
|
|
||||||
|
#ifndef TCP_SLOW_INTERVALs
|
||||||
|
/* the coarse grained timeout in milliseconds */
|
||||||
|
#define TCP_SLOW_INTERVAL (2*TCP_TMR_INTERVAL)
|
||||||
|
#endif /* TCP_SLOW_INTERVAL */
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
--------------------------- Platform specific locking -------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
|
||||||
|
* critical regions during buffer allocation, deallocation and memory
|
||||||
|
* allocation and deallocation.
|
||||||
|
*/
|
||||||
|
#define SYS_LIGHTWEIGHT_PROT 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
|
||||||
|
* use lwIP facilities.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* set to 1 so we have no thread behaviour */
|
||||||
|
#define NO_SYS 1
|
||||||
|
|
||||||
|
/* set to 1 so we can use our own timers */
|
||||||
|
#define NO_SYS_NO_TIMERS 1
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
-------------------------------- Memory options --------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
#define LWIP_CHKSUM_ALGORITHM 2
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEM_ALIGNMENT: should be set to the alignment of the CPU
|
||||||
|
* 4 byte alignment -> #define MEM_ALIGNMENT 4
|
||||||
|
* 2 byte alignment -> #define MEM_ALIGNMENT 2
|
||||||
|
*/
|
||||||
|
#define MEM_ALIGNMENT 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEM_SIZE: the size of the heap memory. If the application will send
|
||||||
|
* a lot of data that needs to be copied, this should be set high.
|
||||||
|
*/
|
||||||
|
#define MEM_SIZE 1024 * 1024 * 64
|
||||||
|
#define TCP_SND_BUF 1024 * 63
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
-------------------------- Internal Memory Pool Sizes --------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF).
|
||||||
|
* If the application sends a lot of data out of ROM (or other static memory),
|
||||||
|
* this should be set high.
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_PBUF 256
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_RAW_PCB: Number of raw connection PCBs
|
||||||
|
* (requires the LWIP_RAW option)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_RAW_PCB 32
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||||
|
* per active UDP "connection".
|
||||||
|
* (requires the LWIP_UDP option)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_UDP_PCB 4
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections.
|
||||||
|
* (requires the LWIP_TCP option)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_TCP_PCB 128
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections.
|
||||||
|
* (requires the LWIP_TCP option)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_TCP_PCB_LISTEN 128
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments.
|
||||||
|
* (requires the LWIP_TCP option)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for
|
||||||
|
* reassembly (whole packets, not fragments!)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_REASSDATA 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
|
||||||
|
* packets (pbufs) that are waiting for an ARP request (to resolve
|
||||||
|
* their destination address) to finish.
|
||||||
|
* (requires the ARP_QUEUEING option)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_ARP_QUEUE 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts.
|
||||||
|
* (requires NO_SYS==0)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_SYS_TIMEOUT 3
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_NETBUF: the number of struct netbufs.
|
||||||
|
* (only needed if you use the sequential API, like api_lib.c)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_NETBUF 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_NETCONN: the number of struct netconns.
|
||||||
|
* (only needed if you use the sequential API, like api_lib.c)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_NETCONN 4
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used
|
||||||
|
* for callback/timeout API communication.
|
||||||
|
* (only needed if you use tcpip.c)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_TCPIP_MSG_API 8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used
|
||||||
|
* for incoming packets.
|
||||||
|
* (only needed if you use tcpip.c)
|
||||||
|
*/
|
||||||
|
#define MEMP_NUM_TCPIP_MSG_INPKT 8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
|
||||||
|
*/
|
||||||
|
#define PBUF_POOL_SIZE 128 /* was 32 */
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
----------------------------------- ARP options --------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_ARP==1: Enable ARP functionality.
|
||||||
|
*/
|
||||||
|
#define LWIP_ARP 1
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------------ IP options---------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_FORWARD==1: Enables the ability to forward IP packets across network
|
||||||
|
* interfaces. If you are going to run lwIP on a device with only one network
|
||||||
|
* interface, define this to 0.
|
||||||
|
*/
|
||||||
|
#define IP_FORWARD 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_OPTIONS: Defines the behavior for IP options.
|
||||||
|
* IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped.
|
||||||
|
* IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed).
|
||||||
|
*/
|
||||||
|
#define IP_OPTIONS_ALLOWED 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that
|
||||||
|
* this option does not affect outgoing packet sizes, which can be controlled
|
||||||
|
* via IP_FRAG.
|
||||||
|
*/
|
||||||
|
#define IP_REASSEMBLY 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note
|
||||||
|
* that this option does not affect incoming packet sizes, which can be
|
||||||
|
* controlled via IP_REASSEMBLY.
|
||||||
|
*/
|
||||||
|
#define IP_FRAG 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally)
|
||||||
|
* a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived
|
||||||
|
* in this time, the whole packet is discarded.
|
||||||
|
*/
|
||||||
|
#define IP_REASS_MAXAGE 3
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled.
|
||||||
|
* Since the received pbufs are enqueued, be sure to configure
|
||||||
|
* PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive
|
||||||
|
* packets even if the maximum amount of fragments is enqueued for reassembly!
|
||||||
|
*/
|
||||||
|
#define IP_REASS_MAX_PBUFS 4
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP
|
||||||
|
* fragmentation. Otherwise pbufs are allocated and reference the original
|
||||||
|
* packet data to be fragmented.
|
||||||
|
*/
|
||||||
|
#define IP_FRAG_USES_STATIC_BUF 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers.
|
||||||
|
*/
|
||||||
|
#define IP_DEFAULT_TTL 255
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------- ICMP Options -----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_ICMP==1: Enable ICMP module inside the IP stack.
|
||||||
|
* Be careful, disable that make your product non-compliant to RFC1122
|
||||||
|
*/
|
||||||
|
#define LWIP_ICMP 1
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------- RAW Options ------------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
|
||||||
|
*/
|
||||||
|
#define LWIP_RAW 1
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------- DHCP Options -----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_DHCP==1: Enable DHCP module.
|
||||||
|
*/
|
||||||
|
#define LWIP_DHCP 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------ AUTOIP Options ----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_AUTOIP==1: Enable AUTOIP module.
|
||||||
|
*/
|
||||||
|
#define LWIP_AUTOIP 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------- SNMP Options -----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP
|
||||||
|
* transport.
|
||||||
|
*/
|
||||||
|
#define LWIP_SNMP 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------- IGMP Options -----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_IGMP==1: Turn on IGMP module.
|
||||||
|
*/
|
||||||
|
#define LWIP_IGMP 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
-------------------------------- DNS Options -----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS
|
||||||
|
* transport.
|
||||||
|
*/
|
||||||
|
#define LWIP_DNS 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
-------------------------------- UDP Options -----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_UDP==1: Turn on UDP.
|
||||||
|
*/
|
||||||
|
#define LWIP_UDP 1
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
-------------------------------- TCP Options -----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_TCP==1: Turn on TCP.
|
||||||
|
*/
|
||||||
|
#define LWIP_TCP 1
|
||||||
|
|
||||||
|
#define LWIP_LISTEN_BACKLOG 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
-------------------------------- Pbuf Options ----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
|
||||||
|
* link level header. The default is 14, the standard value for
|
||||||
|
* Ethernet.
|
||||||
|
*/
|
||||||
|
#define PBUF_LINK_HLEN 16
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is
|
||||||
|
* designed to accomodate single full size TCP frame in one pbuf, including
|
||||||
|
* TCP_MSS, IP header, and link header.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN)
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
--------------------------------- LOOPIF Options -------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c
|
||||||
|
*/
|
||||||
|
#define LWIP_HAVE_LOOPIF 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
---------------------------- Sequential Layer Options --------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
|
||||||
|
*/
|
||||||
|
#define LWIP_NETCONN 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
--------------------------------- Socket Options -------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
/**
|
||||||
|
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
|
||||||
|
*/
|
||||||
|
#define LWIP_SOCKET 0
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
------------------------------ Statistics Options ------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_STATS==1: Enable statistics collection in lwip_stats.
|
||||||
|
*/
|
||||||
|
#define LWIP_STATS 1
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
--------------------------------- PPP Options ----------------------------------
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PPP_SUPPORT==1: Enable PPP.
|
||||||
|
*/
|
||||||
|
#define PPP_SUPPORT 0
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc */
|
||||||
|
|
||||||
|
#endif /* __LWIPOPTS_H__ */
|
73
ext/contrib/ports/unix/proj/lib/unixlib.c
Normal file
73
ext/contrib/ports/unix/proj/lib/unixlib.c
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
* are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||||
|
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||||
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||||
|
* OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* Author: Kieran Mansley <kjm25@cam.ac.uk>
|
||||||
|
*
|
||||||
|
* $Id: unixlib.c,v 1.10 2010/02/17 16:52:30 goldsimon Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
/* unixlib.c
|
||||||
|
*
|
||||||
|
* The initialisation functions for a shared library
|
||||||
|
*
|
||||||
|
* You may need to configure this file to your own needs - it is only an example
|
||||||
|
* of how lwIP can be used as a self initialising shared library.
|
||||||
|
*
|
||||||
|
* In particular, you should change the gateway, ipaddr, and netmask to be the values
|
||||||
|
* you would like the stack to use.
|
||||||
|
*/
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include "lwip/init.h"
|
||||||
|
#include "lwip/sys.h"
|
||||||
|
#include "lwip/mem.h"
|
||||||
|
#include "lwip/memp.h"
|
||||||
|
#include "lwip/pbuf.h"
|
||||||
|
#include "lwip/tcp.h"
|
||||||
|
#include "lwip/tcpip.h"
|
||||||
|
#include "lwip/netif.h"
|
||||||
|
#include "lwip/stats.h"
|
||||||
|
#include "lwip/sockets.h"
|
||||||
|
|
||||||
|
#include "netif/tapif.h"
|
||||||
|
|
||||||
|
struct netif netif;
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
tcpip_init_done(void *arg)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void _init(void){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void _fini(void){
|
||||||
|
}
|
|
@ -160,7 +160,6 @@ tcpip_thread(void *arg)
|
||||||
err_t
|
err_t
|
||||||
tcpip_input(struct pbuf *p, struct netif *inp)
|
tcpip_input(struct pbuf *p, struct netif *inp)
|
||||||
{
|
{
|
||||||
printf("------TCPIP_INPUT()\n");
|
|
||||||
#if LWIP_TCPIP_CORE_LOCKING_INPUT
|
#if LWIP_TCPIP_CORE_LOCKING_INPUT
|
||||||
err_t ret;
|
err_t ret;
|
||||||
LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_input: PACKET %p/%p\n", (void *)p, (void *)inp));
|
LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_input: PACKET %p/%p\n", (void *)p, (void *)inp));
|
||||||
|
|
|
@ -304,7 +304,6 @@ return_noroute:
|
||||||
err_t
|
err_t
|
||||||
ip_input(struct pbuf *p, struct netif *inp)
|
ip_input(struct pbuf *p, struct netif *inp)
|
||||||
{
|
{
|
||||||
printf("--------IP INPUT()\n");
|
|
||||||
struct ip_hdr *iphdr;
|
struct ip_hdr *iphdr;
|
||||||
struct netif *netif;
|
struct netif *netif;
|
||||||
u16_t iphdr_hlen;
|
u16_t iphdr_hlen;
|
||||||
|
|
|
@ -91,7 +91,6 @@ static err_t tcp_timewait_input(struct tcp_pcb *pcb);
|
||||||
void
|
void
|
||||||
tcp_input(struct pbuf *p, struct netif *inp)
|
tcp_input(struct pbuf *p, struct netif *inp)
|
||||||
{
|
{
|
||||||
printf("----TCP_INPUT()\n");
|
|
||||||
struct tcp_pcb *pcb, *prev;
|
struct tcp_pcb *pcb, *prev;
|
||||||
struct tcp_pcb_listen *lpcb;
|
struct tcp_pcb_listen *lpcb;
|
||||||
#if SO_REUSE
|
#if SO_REUSE
|
||||||
|
@ -268,10 +267,7 @@ tcp_input(struct pbuf *p, struct netif *inp)
|
||||||
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n"));
|
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n"));
|
||||||
#endif /* TCP_INPUT_DEBUG */
|
#endif /* TCP_INPUT_DEBUG */
|
||||||
|
|
||||||
if(pcb == NULL)
|
|
||||||
{
|
|
||||||
printf ("--------------PCB == NULL!\n");
|
|
||||||
}
|
|
||||||
if (pcb != NULL) {
|
if (pcb != NULL) {
|
||||||
/* The incoming segment belongs to a connection. */
|
/* The incoming segment belongs to a connection. */
|
||||||
#if TCP_INPUT_DEBUG
|
#if TCP_INPUT_DEBUG
|
||||||
|
@ -305,7 +301,6 @@ tcp_input(struct pbuf *p, struct netif *inp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tcp_input_pcb = pcb;
|
tcp_input_pcb = pcb;
|
||||||
printf(" > TCP_PROCESS()\n");
|
|
||||||
err = tcp_process(pcb);
|
err = tcp_process(pcb);
|
||||||
/* A return value of ERR_ABRT means that tcp_abort() was called
|
/* A return value of ERR_ABRT means that tcp_abort() was called
|
||||||
and that the pcb has been freed. If so, we don't do anything. */
|
and that the pcb has been freed. If so, we don't do anything. */
|
||||||
|
@ -579,7 +574,6 @@ tcp_timewait_input(struct tcp_pcb *pcb)
|
||||||
static err_t
|
static err_t
|
||||||
tcp_process(struct tcp_pcb *pcb)
|
tcp_process(struct tcp_pcb *pcb)
|
||||||
{
|
{
|
||||||
printf("------TCP_PROCESS()\n");
|
|
||||||
struct tcp_seg *rseg;
|
struct tcp_seg *rseg;
|
||||||
u8_t acceptable = 0;
|
u8_t acceptable = 0;
|
||||||
err_t err;
|
err_t err;
|
||||||
|
@ -629,8 +623,6 @@ tcp_process(struct tcp_pcb *pcb)
|
||||||
|
|
||||||
tcp_parseopt(pcb);
|
tcp_parseopt(pcb);
|
||||||
|
|
||||||
printf("------TCP_PROCESS(): pcb->state = %d\n", pcb->state);
|
|
||||||
|
|
||||||
/* Do different things depending on the TCP state. */
|
/* Do different things depending on the TCP state. */
|
||||||
switch (pcb->state) {
|
switch (pcb->state) {
|
||||||
case SYN_SENT:
|
case SYN_SENT:
|
||||||
|
@ -1036,8 +1028,8 @@ tcp_receive(struct tcp_pcb *pcb)
|
||||||
|
|
||||||
LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unacked)\n", (u16_t)pcb->snd_queuelen));
|
LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unacked)\n", (u16_t)pcb->snd_queuelen));
|
||||||
if (pcb->snd_queuelen != 0) {
|
if (pcb->snd_queuelen != 0) {
|
||||||
//LWIP_ASSERT("tcp_receive: valid queue length", pcb->unacked != NULL ||
|
LWIP_ASSERT("tcp_receive: valid queue length", pcb->unacked != NULL ||
|
||||||
// pcb->unsent != NULL);
|
pcb->unsent != NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -324,7 +324,6 @@ tcp_write_checks(struct tcp_pcb *pcb, u16_t len)
|
||||||
pcb->flags |= TF_NAGLEMEMERR;
|
pcb->flags |= TF_NAGLEMEMERR;
|
||||||
return ERR_MEM;
|
return ERR_MEM;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
if (pcb->snd_queuelen != 0) {
|
if (pcb->snd_queuelen != 0) {
|
||||||
LWIP_ASSERT("tcp_write: pbufs on queue => at least one queue non-empty",
|
LWIP_ASSERT("tcp_write: pbufs on queue => at least one queue non-empty",
|
||||||
pcb->unacked != NULL || pcb->unsent != NULL);
|
pcb->unacked != NULL || pcb->unsent != NULL);
|
||||||
|
@ -332,7 +331,6 @@ tcp_write_checks(struct tcp_pcb *pcb, u16_t len)
|
||||||
LWIP_ASSERT("tcp_write: no pbufs on queue => both queues empty",
|
LWIP_ASSERT("tcp_write: no pbufs on queue => both queues empty",
|
||||||
pcb->unacked == NULL && pcb->unsent == NULL);
|
pcb->unacked == NULL && pcb->unsent == NULL);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1276,7 +1276,6 @@ etharp_request(struct netif *netif, ip_addr_t *ipaddr)
|
||||||
err_t
|
err_t
|
||||||
ethernet_input(struct pbuf *p, struct netif *netif)
|
ethernet_input(struct pbuf *p, struct netif *netif)
|
||||||
{
|
{
|
||||||
printf("------ETHERNET_INPUT()\n");
|
|
||||||
struct eth_hdr* ethhdr;
|
struct eth_hdr* ethhdr;
|
||||||
u16_t type;
|
u16_t type;
|
||||||
#if LWIP_ARP || ETHARP_SUPPORT_VLAN
|
#if LWIP_ARP || ETHARP_SUPPORT_VLAN
|
||||||
|
|
|
@ -78,7 +78,7 @@ NetconEthernetTap::NetconEthernetTap(
|
||||||
Utils::snprintf(sockPath,sizeof(sockPath),"/tmp/.ztnc_%.16llx",(unsigned long long)nwid);
|
Utils::snprintf(sockPath,sizeof(sockPath),"/tmp/.ztnc_%.16llx",(unsigned long long)nwid);
|
||||||
_dev = sockPath;
|
_dev = sockPath;
|
||||||
|
|
||||||
lwipstack = new LWIPStack("/root/dev/netcon/liblwip.so");
|
lwipstack = new LWIPStack("netcon/liblwip.so");
|
||||||
if(!lwipstack) // TODO double check this check
|
if(!lwipstack) // TODO double check this check
|
||||||
throw std::runtime_error("unable to load lwip lib.");
|
throw std::runtime_error("unable to load lwip lib.");
|
||||||
lwipstack->lwip_init();
|
lwipstack->lwip_init();
|
||||||
|
@ -340,6 +340,10 @@ void NetconEthernetTap::threadMain()
|
||||||
fprintf(stderr, "- IP_TMR_INTERVAL = %d\n", IP_TMR_INTERVAL);
|
fprintf(stderr, "- IP_TMR_INTERVAL = %d\n", IP_TMR_INTERVAL);
|
||||||
fprintf(stderr, "- DEFAULT_READ_BUFFER_SIZE = %d\n", DEFAULT_READ_BUFFER_SIZE);
|
fprintf(stderr, "- DEFAULT_READ_BUFFER_SIZE = %d\n", DEFAULT_READ_BUFFER_SIZE);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//fprintf(stderr, "- LWIP_DEBUG = %d\n", LWIP_DEBUG);
|
||||||
|
fprintf(stderr, "- TCP_DEBUG = %d\n", TCP_DEBUG);
|
||||||
|
|
||||||
// Main timer loop
|
// Main timer loop
|
||||||
while (_run) {
|
while (_run) {
|
||||||
uint64_t now = OSUtils::now();
|
uint64_t now = OSUtils::now();
|
||||||
|
@ -520,7 +524,7 @@ err_t NetconEthernetTap::nc_poll(void* arg, struct tcp_pcb *tpcb)
|
||||||
NetconConnection *c = l->tap->getConnectionByPCB(tpcb);
|
NetconConnection *c = l->tap->getConnectionByPCB(tpcb);
|
||||||
NetconEthernetTap *tap = l->tap;
|
NetconEthernetTap *tap = l->tap;
|
||||||
if(c && c->idx > 0){
|
if(c && c->idx > 0){
|
||||||
fprintf(stderr, "nc_poll(): calling handle_Write()\n");
|
fprintf(stderr, "nc_poll(): calling handle_write()\n");
|
||||||
tap->handle_write(c);
|
tap->handle_write(c);
|
||||||
}
|
}
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
|
@ -563,7 +567,7 @@ err_t NetconEthernetTap::nc_accept(void *arg, struct tcp_pcb *newpcb, err_t err)
|
||||||
int send_fd = tap->_phy.getDescriptor(client->rpc->sock);
|
int send_fd = tap->_phy.getDescriptor(client->rpc->sock);
|
||||||
int n = write(larg_fd, "z", 1);
|
int n = write(larg_fd, "z", 1);
|
||||||
if(n > 0) {
|
if(n > 0) {
|
||||||
if(sock_fd_write(send_fd, fds[1]) < 0) {
|
if(sock_fd_write(send_fd, fds[1]) > 0) {
|
||||||
client->unmapped_conn = new_conn;
|
client->unmapped_conn = new_conn;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -628,7 +632,6 @@ err_t NetconEthernetTap::nc_recved(void *arg, struct tcp_pcb *tpcb, struct pbuf
|
||||||
}
|
}
|
||||||
q = p;
|
q = p;
|
||||||
while(p != NULL) { // Cycle through pbufs and write them to the socket
|
while(p != NULL) { // Cycle through pbufs and write them to the socket
|
||||||
fprintf(stderr, "nc_recved(): writing pbufs to socket\n");
|
|
||||||
if(p->len <= 0)
|
if(p->len <= 0)
|
||||||
break; // ?
|
break; // ?
|
||||||
if((n = tap->_phy.streamSend(c->sock,p->payload, p->len)) > 0) {
|
if((n = tap->_phy.streamSend(c->sock,p->payload, p->len)) > 0) {
|
||||||
|
|
Binary file not shown.
BIN
netcon/liblwip.so.debug
Executable file
BIN
netcon/liblwip.so.debug
Executable file
Binary file not shown.
Loading…
Add table
Reference in a new issue