Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 1:2c9d412ad471, committed 2011-05-04
- Comitter:
- networker
- Date:
- Wed May 04 15:42:13 2011 +0000
- Parent:
- 0:7f26f0680202
- Commit message:
- first publication (mbed challenge submission)
Changed in this revision
--- a/ConfigFile.cpp Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,415 +0,0 @@
-/**
- * Configuration file interface class (Version 0.0.1)
- *
- * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
- * http://shinta.main.jp/
- */
-#include "ConfigFile.h"
-
-#define NEWLINE_UNIX "\n"
-#define NEWLINE_DOS "\r\n"
-#define NEWLINE_MAC "\r"
-
-/**
- * Create a configuration file class.
- */
-ConfigFile::ConfigFile() {
- /*
- * Allocation for a config_t list.
- */
- configlist = (config_t **)malloc(sizeof(config_t *) * MAXCONFIG);
- for (int i = 0; i < MAXCONFIG; i++) {
- configlist[i] = NULL;
- }
-}
-
-/**
- * Destroy a configuration file class.
- */
-ConfigFile::~ConfigFile() {
- /*
- * Remove all storage and the contents.
- */
- for (int i = 0; i < MAXCONFIG; i++) {
- config_t *cfg = configlist[i];
- if (cfg != NULL) {
- free(cfg->key);
- free(cfg->value);
- free(cfg);
- }
- configlist[i] = NULL;
- }
-
- /*
- * Remove cnofig_t list.
- */
- free(configlist);
- configlist = NULL;
-}
-
-/**
- * Get a value for a key.
- *
- * @param key A target key name.
- * @param value A pointer to a value storage.
- * @param siz A size of a value storage.
- * @return A value or NULL.
- */
-bool ConfigFile::getValue(char *key, char *value, size_t siz) {
- /*
- * Null check.
- */
- if (key == NULL) {
- return false;
- }
-
- /*
- * Search a config_t object from the key.
- */
- config_t *p = search(key);
- if (p == NULL) {
- return false;
- }
-
- /*
- * Check the storage size.
- */
- if (siz <= strlen(p->value)) {
- return false;
- }
-
- /*
- * Copy the value to the storage.
- */
- strcpy(value, p->value);
- return true;
-}
-
-/**
- * Set a set of a key and value.
- *
- * @param key A key.
- * @param value A value.
- *
- * @return True if it succeed.
- */
-bool ConfigFile::setValue(char *key, char *value) {
- /*
- * Null check.
- */
- if ((key == NULL) || (value == NULL)) {
- return false;
- }
-
- /*
- * Size check.
- */
- if ((MAXLEN_KEY < strlen(key)) || (MAXLEN_VALUE < strlen(value))) {
- return false;
- }
-
- /*
- * Search a config_t object from the key.
- */
- config_t *p = search(key);
- if (p == NULL) {
- /*
- * Allocation a memory for a new key.
- */
- char *k = (char *)malloc(sizeof(char) * (strlen(key) + 1));
- if (k == NULL) {
- return false;
- }
- strcpy(k, key);
-
- /*
- * Allocation a memory for a new value.
- */
- char *v = (char *)malloc(sizeof(char) * (strlen(value) + 1));
- if (v == NULL) {
- free(k);
- return false;
- }
- strcpy(v, value);
-
- /*
- * Allocation a memory for a new configuration.
- */
- config_t *cfg = (config_t *)malloc(sizeof(config_t) * 1);
- if (cfg == NULL) {
- free(k);
- free(v);
- return false;
- }
- cfg->key = k;
- cfg->value = v;
-
- /*
- * Add the new configuration.
- */
- if (!add(cfg)) {
- free(k);
- free(v);
- free(cfg);
- return false;
- }
-
- return true;
- } else {
- /*
- * The value is same.
- */
- if (strcmp(value, p->value) == 0) {
- return true;
- }
-
- /*
- * Free a memory for the value.
- */
- free(p->value);
- p->value = NULL;
-
- /*
- * Allocation memory for the new value.
- */
- char *v = (char *)malloc(sizeof(char) * (strlen(value) + 1));
- if (v == NULL) {
- return false;
- }
-
- /*
- * Store it.
- */
- strcpy(v, value);
- p->value = v;
-
- return true;
- }
-}
-
-/**
- * Remove a config.
- *
- * @param key A key.
- *
- * @return True if it succeed.
- */
-bool ConfigFile::remove(char *key) {
- if (key == NULL) {
- return false;
- }
- for (int i = 0; i < MAXCONFIG; i++) {
- config_t *cfg = configlist[i];
- if (cfg != NULL) {
- if (strcmp(cfg->key, key) == 0) {
- free(cfg->key);
- free(cfg->value);
- free(cfg);
- configlist[i] = NULL;
- return true;
- }
- }
- }
- return false;
-}
-
-/**
- * Remove all config.
- *
- * @return True if it succeed.
- */
-bool ConfigFile::removeAll(void) {
- for (int i = 0; i < MAXCONFIG; i++) {
- config_t *p = configlist[i];
- if (p != NULL) {
- free(p->key);
- free(p->value);
- }
- free(p);
- configlist[i] = NULL;
- }
- return true;
-}
-
-/**
- * Get a number of configuration sets.
- *
- * @return number of configuration sets.
- */
-int ConfigFile::getCount() {
- int cnt = 0;
- for (int i = 0; i < MAXCONFIG; i++) {
- config_t *p = configlist[i];
- if (p != NULL) {
- cnt++;
- }
- }
- return cnt;
-}
-
-/**
- * Get a key and a value.
- *
- * @param index Index number of this list.
- * @param key A pointer to a buffer for key.
- * @param keybufsiz A size of the key buffer.
- * @param value A pointer to a buffer for value.
- * @param valuebufsiz A size of the value buffer.
- *
- * @return true if it succeed.
- */
-bool ConfigFile::getKeyAndValue(int index, char *key, size_t keybufsiz, char *value, size_t valuebufsiz) {
- int cnt = 0;
- for (int i = 0; i < MAXCONFIG; i++) {
- config_t *p = configlist[i];
- if (p != NULL) {
- if (cnt == index) {
- if ((strlen(p->key) < keybufsiz) && (strlen(p->value) < valuebufsiz)) {
- strcpy(key, p->key);
- strcpy(value, p->value);
- return true;
- }
- return false;
- }
- cnt++;
- }
- }
- return false;
-}
-
-/**
- * Read from the target file.
- *
- * @param file A target file name.
- */
-bool ConfigFile::read(char *file) {
- /*
- * Open the target file.
- */
- FILE *fp = fopen(file, "r");
- if (fp == NULL) {
- return false;
- }
-
- /*
- * Remove all configuration.
- */
- removeAll();
-
- /*
- * Read from a file.
- */
- char buf[MAXLEN_KEY + 8 + MAXLEN_VALUE];
- while (fgets(buf, sizeof(buf), fp) != NULL) {
- /*
- * Ignore a comment.
- */
- if (buf[0] == '#') {
- continue;
- }
-
- /*
- * Trim a return.
- */
- const size_t len = strlen(buf);
- for (int i = 0; i < len; i++) {
- if ((buf[i] == '\r') || (buf[i] == '\n')) {
- buf[i] = '\0';
- }
- }
-
- /*
- * Separate key and value.
- */
- char k[MAXLEN_KEY];
- char v[MAXLEN_VALUE];
- char *sp = strchr(buf, SEPARATOR);
- if (sp != NULL) {
- strcpy(v, sp + 1);
- *sp = '\0';
- strcpy(k, buf);
- setValue(k, v);
- }
- }
- fclose(fp);
- return true;
-}
-
-/**
- * Write from the target file.
- *
- * @param file A pointer to a file name.
- * @param header A pointer to a header.
- * @param ff File format.
- */
-bool ConfigFile::write(char *file, char *header, FileFormat ff) {
- /*
- * Open the target file.
- */
- FILE *fp = fopen(file, "w");
- if (fp == NULL) {
- return false;
- }
-
- /*
- * Set a type of new line.
- */
- char *newline = NEWLINE_UNIX;
- switch (ff) {
- case UNIX:
- newline = NEWLINE_UNIX;
- break;
- case MAC:
- newline = NEWLINE_MAC;
- break;
- case DOS:
- newline = NEWLINE_DOS;
- break;
- default:
- newline = NEWLINE_UNIX;
- break;
- }
-
- /*
- * Write the header.
- */
- if (header != NULL) {
- fprintf(fp, "%s%s", header, newline);
- }
-
- /*
- * Write the data.
- */
- for (int i = 0; i < MAXCONFIG; i++) {
- config_t *cfg = configlist[i];
- if (cfg != NULL) {
- fprintf(fp, "%s=%s%s", cfg->key, cfg->value, newline);
- }
- }
- fclose(fp);
- return true;
-}
-
-ConfigFile::config_t *ConfigFile::search(char *key) {
- if (key == NULL) {
- return NULL;
- }
- for (int i = 0; i < MAXCONFIG; i++) {
- if (configlist[i] != NULL) {
- if (strcmp(configlist[i]->key, key) == 0) {
- return configlist[i];
- }
- }
- }
- return NULL;
-}
-
-bool ConfigFile::add(config_t *cfg) {
- for (int i = 0; i < MAXCONFIG; i++) {
- if (configlist[i] == NULL) {
- configlist[i] = cfg;
- return true;
- }
- }
- return false;
-}
\ No newline at end of file
--- a/ConfigFile.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/**
- * Configuration file interface class (Version 0.0.1)
- *
- * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
- * http://shinta.main.jp/
- */
-#include "mbed.h"
-
-#ifndef _CONFIG_FILE_H_
-#define _CONFIG_FILE_H_
-
-/**
- * Configuration File class.
- */
-class ConfigFile {
-public:
-
- /**
- * Create a configuration file class.
- */
- ConfigFile();
-
- /**
- * Destroy a configuration file class.
- */
- ~ConfigFile();
-
- /**
- * Get a value for a key.
- *
- * @param key A target key name.
- * @param value A pointer to a value storage.
- * @param siz A size of a value storage.
- * @return A value or NULL.
- */
- bool getValue(char *key, char *value, size_t siz);
-
- /**
- * Set a set of a key and value.
- *
- * @param key A key.
- * @param value A value.
- *
- * @return True if it succeed.
- */
- bool setValue(char *key, char *value);
-
- /**
- * Remove a config.
- *
- * @param key A key.
- *
- * @return True if it succeed.
- */
- bool remove(char *key);
-
- /**
- * Remove all config.
- *
- * @return True if it succeed.
- */
- bool removeAll(void);
-
- /**
- * Get a number of configuration sets.
- *
- * @return number of configuration sets.
- */
- int getCount();
-
- /**
- * Get a key and a value.
- *
- * @param index Index number of this list.
- * @param key A pointer to a buffer for key.
- * @param keybufsiz A size of the key buffer.
- * @param value A pointer to a buffer for value.
- * @param valuebufsiz A size of the value buffer.
- *
- * @return true if it succeed.
- */
- bool getKeyAndValue(int index, char *key, size_t keybufsiz, char *value, size_t valuebufsiz);
-
- /**
- * Read from the target file.
- *
- * @param file A target file name.
- */
- bool read(char *file);
-
- typedef enum {
- UNIX,
- MAC,
- DOS
- } FileFormat;
-
- /**
- * Write from the target file.
- *
- * @param file A pointer to a file name.
- * @param header A pointer to a header.
- * @param ff File format.
- */
- bool write(char *file, char *header = NULL, FileFormat ff = UNIX);
-
-private:
- typedef struct {
- char *key;
- char *value;
- } config_t;
- config_t **configlist;
- static const int MAXCONFIG = 64;
- static const int MAXLEN_KEY = 64;
- static const int MAXLEN_VALUE = 128;
- static const char SEPARATOR = '=';
-
- config_t *search(char *key);
- bool add(config_t *cfg);
-};
-
-#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ConfigFile.lib Wed May 04 15:42:13 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/shintamainjp/code/ConfigFile/#f6ceafabe9f8
Binary file LPC2368/EthernetNetIf.ar has changed
Binary file LPC2368/HTTPServer.ar has changed
--- a/LPC2368/api/DNSRequest.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/** \file
-DNS Request header file
-*/
-
-#ifndef DNSREQUEST_H
-#define DNSREQUEST_H
-
-#include "core/net.h"
-#include "core/ipaddr.h"
-#include "core/host.h"
-//Essentially it is a safe interface to NetDnsRequest
-
-///DNS Request error codes
-enum DNSRequestErr
-{
- __DNS_MIN = -0xFFFF,
- DNS_SETUP, ///<DNSRequest not properly configured
- DNS_IF, ///<Interface has problems, does not exist or is not initialized
- DNS_MEM, ///<Not enough mem
- DNS_INUSE, ///<Interface / Port is in use
- DNS_PROCESSING, ///<Request has not completed
-//...
- DNS_OK = 0 ///<Success
-};
-
-///DNS Request Result Events
-enum DNSReply
-{
- DNS_PRTCL,
- DNS_NOTFOUND, ///Hostname is unknown
- DNS_ERROR, ///Problem with DNS Service
- //...
- DNS_FOUND,
-};
-
-class NetDnsRequest;
-enum NetDnsReply;
-
-///This is a simple DNS Request class
-/**
- This class exposes an API to deal with DNS Requests
-*/
-class DNSRequest
-{
-public:
- ///Creates a new request
- DNSRequest();
-
- ///Terminates and closes request
- ~DNSRequest();
-
- ///Resolves an hostname
- /**
- @param hostname : hostname to resolve
- */
- DNSRequestErr resolve(const char* hostname);
-
- ///Resolves an hostname
- /**
- @param host : hostname to resolve, the result will be stored in the IpAddr field of this object
- */
- DNSRequestErr resolve(Host* pHost);
-
- ///Setups callback
- /**
- The callback function will be called on result.
- @param pMethod : callback function
- */
- void setOnReply( void (*pMethod)(DNSReply) );
-
- class CDummy;
- ///Setups callback
- /**
- The callback function will be called on result.
- @param pItem : instance of class on which to execute the callback method
- @param pMethod : callback method
- */
- template<class T>
- void setOnReply( T* pItem, void (T::*pMethod)(DNSReply) )
- {
- m_pCbItem = (CDummy*) pItem;
- m_pCbMeth = (void (CDummy::*)(DNSReply)) pMethod;
- }
-
- ///Gets IP address once it has been resolved
- /**
- @param pIp : pointer to an IpAddr instance in which to store the resolved IP address
- */
- DNSRequestErr getResult(IpAddr* pIp);
-
- ///Closes DNS Request before completion
- DNSRequestErr close();
-
-protected:
- void onNetDnsReply(NetDnsReply r);
- DNSRequestErr checkInst();
-
-private:
- NetDnsRequest* m_pNetDnsRequest;
-
- CDummy* m_pCbItem;
- void (CDummy::*m_pCbMeth)(DNSReply);
-
- void (*m_pCb)(DNSReply);
-
-};
-
-#endif
--- a/LPC2368/api/TCPSocket.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/** \file
-TCP Socket header file
-*/
-
-#ifndef TCPSOCKET_H
-#define TCPSOCKET_H
-
-#include "core/net.h"
-#include "core/host.h"
-//Essentially it is a safe interface to NetTcpSocket
-
-///TCP Socket error codes
-enum TCPSocketErr
-{
- __TCPSOCKET_MIN = -0xFFFF,
- TCPSOCKET_SETUP, ///<TCPSocket not properly configured
- TCPSOCKET_TIMEOUT, ///<Connection timed out
- TCPSOCKET_IF, ///<Interface has problems, does not exist or is not initialized
- TCPSOCKET_MEM, ///<Not enough mem
- TCPSOCKET_INUSE, ///<Interface / Port is in use
- TCPSOCKET_EMPTY, ///<Connections queue is empty
- TCPSOCKET_RST, ///<Connection was reset by remote host
-//...
- TCPSOCKET_OK = 0 ///<Success
-};
-
-///TCP Socket Events
-enum TCPSocketEvent
-{
- TCPSOCKET_CONNECTED, ///<Connected to host
- TCPSOCKET_ACCEPT, ///<Client is connected, must call accept() to get a new Socket
- TCPSOCKET_READABLE, ///<Data in buf
- TCPSOCKET_WRITEABLE, ///<Can write data to buf
- TCPSOCKET_CONTIMEOUT, ///<Connection timed out
- TCPSOCKET_CONRST, ///<Connection was reset by remote host
- TCPSOCKET_CONABRT, ///<Connection was aborted
- TCPSOCKET_ERROR, ///<Unknown error
- TCPSOCKET_DISCONNECTED ///<Disconnected
-};
-
-class NetTcpSocket;
-enum NetTcpSocketEvent;
-
-///This is a simple TCP Socket class
-/**
- This class exposes an API to deal with TCP Sockets
-*/
-class TCPSocket
-{
-public:
- ///Creates a new socket
- TCPSocket();
-protected:
- TCPSocket(NetTcpSocket* pNetTcpSocket);
-public:
- ///Closes if needed and destroys the socket
- ~TCPSocket(); //close()
-
- ///Binds the socket to (local) host
- TCPSocketErr bind(const Host& me);
-
- ///Starts listening
- TCPSocketErr listen();
-
- ///Connects socket to host
- TCPSocketErr connect(const Host& host);
-
- ///Accepts connection from client and gets connected socket
- TCPSocketErr accept(Host* pClient, TCPSocket** ppNewTcpSocket);
-
- ///Sends data
- /*
- @return a negative error code or the number of bytes transmitted
- */
- int /*if < 0 : TCPSocketErr*/ send(const char* buf, int len);
-
- ///Receives data
- /*
- @return a negative error code or the number of bytes received
- */
- int /*if < 0 : TCPSocketErr*/ recv(char* buf, int len);
-
- /* TODO NTH : printf / scanf helpers that call send/recv */
-
- ///Closes socket
- TCPSocketErr close();
-
- //Callbacks
- ///Setups callback
- /**
- @param pMethod : callback function
- */
- void setOnEvent( void (*pMethod)(TCPSocketEvent) );
-
- class CDummy;
- ///Setups callback
- /**
- @param pItem : instance of class on which to execute the callback method
- @param pMethod : callback method
- */
- template<class T>
- void setOnEvent( T* pItem, void (T::*pMethod)(TCPSocketEvent) )
- {
- m_pCbItem = (CDummy*) pItem;
- m_pCbMeth = (void (CDummy::*)(TCPSocketEvent)) pMethod;
- }
-
- ///Disables callback
- void resetOnEvent();
-
-protected:
- void onNetTcpSocketEvent(NetTcpSocketEvent e);
- TCPSocketErr checkInst();
-
-private:
- NetTcpSocket* m_pNetTcpSocket;
-
- CDummy* m_pCbItem;
- void (CDummy::*m_pCbMeth)(TCPSocketEvent);
-
- void (*m_pCb)(TCPSocketEvent);
-
-};
-
-#endif
--- a/LPC2368/api/UDPSocket.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/** \file
-UDP Socket header file
-*/
-
-#ifndef UDPSOCKET_H
-#define UDPSOCKET_H
-
-#include "core/net.h"
-#include "core/host.h"
-//Essentially it is a safe interface to NetUdpSocket
-
-///UDP Socket error codes
-enum UDPSocketErr
-{
- __UDPSOCKET_MIN = -0xFFFF,
- UDPSOCKET_SETUP, ///<UDPSocket not properly configured
- UDPSOCKET_IF, ///<Interface has problems, does not exist or is not initialized
- UDPSOCKET_MEM, ///<Not enough mem
- UDPSOCKET_INUSE, ///<Interface / Port is in use
-//...
- UDPSOCKET_OK = 0 ///<Success
-};
-
-///UDP Socket Event(s)
-enum UDPSocketEvent //Only one event here for now, but keeps that model in case we need to implement some others
-{
- UDPSOCKET_READABLE, ///<Data in buf
-};
-
-class NetUdpSocket;
-enum NetUdpSocketEvent;
-
-///This is a simple UDP Socket class
-/**
- This class exposes an API to deal with UDP Sockets
-*/
-class UDPSocket
-{
-public:
- ///Creates a new socket
- UDPSocket();
-
- ///Closes and destroys socket
- ~UDPSocket(); //close()
-
- ///Binds the socket to local host or a multicast address
- UDPSocketErr bind(const Host& me);
-
- ///Sends data
- /*
- @param pHost : host to send data to
- @return a negative error code or the number of bytes transmitted
- */
- int /*if < 0 : UDPSocketErr*/ sendto(const char* buf, int len, Host* pHost);
-
- ///Receives data
- /*
- @param pHost : host from which this piece of data comes from
- @return a negative error code or the number of bytes received
- */
- int /*if < 0 : UDPSocketErr*/ recvfrom(char* buf, int len, Host* pHost);
-
- /* TODO NTH : printf / scanf helpers that call send/recv */
-
- ///Closes socket
- UDPSocketErr close();
-
- //Callbacks
- ///Setups callback
- /**
- @param pMethod : callback function
- */
- void setOnEvent( void (*pMethod)(UDPSocketEvent) );
-
- class CDummy;
- ///Setups callback
- /**
- @param pItem : instance of class on which to execute the callback method
- @param pMethod : callback method
- */
- template<class T>
- void setOnEvent( T* pItem, void (T::*pMethod)(UDPSocketEvent) )
- {
- m_pCbItem = (CDummy*) pItem;
- m_pCbMeth = (void (CDummy::*)(UDPSocketEvent)) pMethod;
- }
-
- ///Disables callback
- void resetOnEvent();
-
-protected:
- void onNetUdpSocketEvent(NetUdpSocketEvent e);
- UDPSocketErr checkInst();
-
-private:
- NetUdpSocket* m_pNetUdpSocket;
-
- CDummy* m_pCbItem;
- void (CDummy::*m_pCbMeth)(UDPSocketEvent);
-
- void (*m_pCb)(UDPSocketEvent);
-
-};
-
-#endif
--- a/LPC2368/core/host.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef HOST_H
-#define HOST_H
-
-#include "ipaddr.h"
-#include <string.h>
-
-///Host information container
-/**
-This class is a container for data relative to a connection:
-- IP Address
-- Port number
-- Host Name
-*/
-class Host
-{
-public:
- ///Initiliazes host with null values
- Host() : m_ip(0,0,0,0), m_port(0), m_name(NULL)
- {
-
- }
-
- ///Initializes host
- Host(const IpAddr& ip, const int& port, const char* name="" ) : m_ip(ip), m_port(port), m_name(NULL)
- {
- setName(name);
- }
-
- ~Host()
- {
- if(m_name)
- {
- delete[] m_name;
- }
- }
-
- ///Returns IP address
- const IpAddr& getIp() const
- {
- return m_ip;
- }
-
- ///Returns port number
- const int& getPort() const
- {
- return m_port;
- }
-
- ///Returns host name
- const char* getName() const
- {
- return m_name;
- }
-
- ///Sets IP address
- void setIp(const IpAddr& ip)
- {
- m_ip = ip;
- }
-
- ///Sets port number
- void setPort(int port)
- {
- m_port = port;
- }
-
- ///Sets host name
- void setName(const char* name)
- {
- if(m_name)
- delete[] m_name;
- int len = strlen(name);
- if(len)
- {
- m_name = new char[len+1];
- strcpy(m_name, name);
- }
- }
-
-private:
- IpAddr m_ip;
- int m_port;
- char* m_name;
-};
-
-#endif
--- a/LPC2368/core/ipaddr.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef IPADDR_H
-#define IPADDR_H
-
-#include "netCfg.h"
-#if NET_LWIP_STACK
-typedef struct ip_addr ip_addr_t;
-#endif
-
-#include "stdint.h"
-
-///IP Address container
-/**
-This class is a container for an IPv4 address.
-*/
-class IpAddr //Basically a C++ frontend to ip_addr_t
-{
-public:
- #if NET_LWIP_STACK
- IpAddr(ip_addr_t* pIp);
- #endif
-
- ///Initializes IP address with provided values
- IpAddr(uint8_t ip0, uint8_t ip1, uint8_t ip2, uint8_t ip3);
-
- ///Initializes IP address with null values
- IpAddr();
-
- #if NET_LWIP_STACK
- ip_addr_t getStruct() const;
- #endif
-
- ///Returns IP address byte #
- uint8_t operator[](unsigned int i) const;
-
- ///Compares too addresses
- /**
- @return true if the two addresses are equal
- */
- bool isEq(const IpAddr& b) const;
-
- ///Compares too addresses
- /**
- @return true if the two addresses are equal
- */
- bool operator==(const IpAddr& b) const;
-
- ///Compares too addresses
- /**
- @return true if the two addresses are different
- */
- bool operator!=(const IpAddr& b) const;
-
- ///Checks whether the address is null
- /**
- @return true if the address is null
- */
- bool isNull() const;
-
- ///Checks whether the address is a broadcast address
- /**
- @return true if the address is a broadcast address
- */
- bool isBroadcast() const;
-
- ///Checks whether the address is a multicast address
- /**
- @return true if the address is a multicast address
- */
- bool isMulticast() const;
-
-private:
- uint8_t m_ip[4];
-};
-
-#endif
--- a/LPC2368/core/net.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef NET_H
-#define NET_H
-
-class NetIf;
-class NetTcpSocket;
-class NetUdpSocket;
-class NetDnsRequest;
-
-#include <list>
-using std::list;
-
-/*
-#include "host.h"
-#include "ipaddr.h"
-#include "netservice.h"
-#include "if/net/netif.h"
-#include "if/net/nettcpsocket.h"
-#include "if/net/netudpsocket.h"
-#include "if/net/netdnsrequest.h"
-*/
-
-class Host;
-class NetIf;
-class NetTcpSocket;
-class NetUdpSocket;
-class NetDnsRequest;
-
-class Net
-{
-private:
- Net();
- ~Net();
-public:
- static void poll(); //Poll every if & socket
-
- static NetTcpSocket* tcpSocket(NetIf& netif);
- static NetTcpSocket* tcpSocket(); //Socket on default if
- static void releaseTcpSocket(NetTcpSocket* pNetTcpSocket);
-
- static NetUdpSocket* udpSocket(NetIf& netif);
- static NetUdpSocket* udpSocket(); //Socket on default if
- static void releaseUdpSocket(NetUdpSocket* pNetUdpSocket);
-
- static NetDnsRequest* dnsRequest(const char* hostname, NetIf& netif);
- static NetDnsRequest* dnsRequest(const char* hostname); //Create a new NetDnsRequest object from default if
-
- static NetDnsRequest* dnsRequest(Host* pHost, NetIf& netif);
- static NetDnsRequest* dnsRequest(Host* pHost); //Create a new NetDnsRequest object from default if
-
- static void setDefaultIf(NetIf& netif); //Deprecated
- static void setDefaultIf(NetIf* pIf);
- static NetIf* getDefaultIf();
-
-protected:
- friend class NetIf;
- friend class NetTcpSocket;
- friend class NetUdpSocket;
-
- static void registerIf(NetIf* pIf);
- static void unregisterIf(NetIf* pIf);
-
- static void registerNetTcpSocket(NetTcpSocket* pNetTcpSocket);
- static void unregisterNetTcpSocket(NetTcpSocket* pNetTcpSocket);
-
- static void registerNetUdpSocket(NetUdpSocket* pNetUdpSocket);
- static void unregisterNetUdpSocket(NetUdpSocket* pNetUdpSocket);
-
-private:
- static Net& net(); //Return inst of singleton
-
- NetIf* m_defaultIf;
-
- list<NetIf*> m_lpIf;
- list<NetTcpSocket*> m_lpNetTcpSocket;
- list<NetUdpSocket*> m_lpNetUdpSocket;
-};
-
-#endif
--- a/LPC2368/core/netservice.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/**
-\file Net Service base class header file
-*/
-
-#ifndef NETSERVICE_H
-#define NETSERVICE_H
-
-#include <list>
-using std::list;
-
-///Net Service base class
-/**
-Each connection-oriented object can register as service (by inheriting this class), so that it is polled regularly.
-It notifies the pool when the connection is terminated so that it can be destroyed.
-*/
-class NetService
-{
-public:
- ///Instantiates a new service
- /**
- @param owned If true the object is owned by the pool and will be destroyed on closure.
- */
- NetService(bool owned = true); //Is owned by the pool?
- virtual ~NetService();
-
- ///This method can be inherited so that it is called on each @a Net::poll() call.
- virtual void poll();
-
- static void servicesPoll(); //Poll all registered services & destroy closed ones
-
-protected:
- ///This flags the service as to be destructed if owned by the pool.
- void close();
-
-private:
- bool m_closed;
- bool m_removed;
- bool m_owned;
-
- static list<NetService*>& lpServices(); //Helper to prevent static initialization fiasco
-
-};
-
-#endif
--- a/LPC2368/dbg/dbg.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/** \file
-Debugging helpers header file
-*/
-
-//#ifdef DBG_H
-//#define DBG_H
-
-#ifdef __LWIP_DEBUG
-#define __DEBUG
-#endif
-
-/*!
- \def __DEBUG
- To define to enable debugging in one file
-*/
-
-#ifdef __DEBUG
-
-#ifndef __DEBUGSTREAM
-#define __DEBUGSTREAM
-
-
-class DebugStream
-{
-public:
-static void debug(const char* format, ...);
-static void release();
-static void breakPoint(const char* file, int line);
-private:
-
-};
-
-#undef DBG
-#undef DBG_END
-#undef BREAK
-
-///Debug output (if enabled), same syntax as printf, with heading info
-#define DBG(...) do{ DebugStream::debug("[%s:%s@%d] ", __FILE__, __FUNCTION__, __LINE__); DebugStream::debug(__VA_ARGS__); } while(0);
-
-///Debug output (if enabled), same syntax as printf, no heading info
-#define DBGL(...) do{ DebugStream::debug(__VA_ARGS__); } while(0);
-#define DBG_END DebugStream::release
-
-///Break point usin serial debug interface (if debug enbaled)
-#define BREAK() DebugStream::breakPoint(__FILE__, __LINE__)
-#endif
-
-#else
-#undef DBG
-#undef DBG_END
-#undef BREAK
-#define DBG(...)
-#define DBG_END()
-#define BREAK()
-#endif
-
-#ifdef __LWIP_DEBUG
-#ifndef __SNPRINTF
-#define __SNPRINTF
-#include "mbed.h"
-
-//int snprintf(char *str, int size, const char *format, ...);
-#endif
-#endif
-
-#ifdef __LWIP_DEBUG
-#undef __DEBUG
-#endif
-
-//#endif
-
--- a/LPC2368/drv/eth/eth_drv.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef ETHDRV_H
-#define ETHDRV_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void eth_poll();
-err_t eth_init(struct netif* netif);
-void eth_address(char* mac);
-void eth_free();
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
--- a/LPC2368/if/eth/EthernetNetIf.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/** \file
-Ethernet network interface header file
-*/
-
-#ifndef ETHERNETNETIF_H
-#define ETHERNETNETIF_H
-
-struct netif;
-
-#include "mbed.h"
-
-#include "if/lwip/LwipNetIf.h"
-
-///Ethernet network interface return codes
-enum EthernetErr
-{
- __ETH_MIN = -0xFFFF,
- ETH_TIMEOUT, ///<Timeout during setup
- ETH_OK = 0 ///<Success
-};
-
-///Ethernet network interface
-/**
-This class provides Ethernet connectivity to the stack
-*/
-class EthernetNetIf : public LwipNetIf
-{
-public:
- ///Instantiates the Interface and register it against the stack, DHCP will be used
- EthernetNetIf(); //W/ DHCP
-
- ///Instantiates the Interface and register it against the stack, DHCP will not be used
- /**
- IpAddr is a container class that can be constructed with either 4 bytes or no parameters for a null IP address.
- */
- EthernetNetIf(IpAddr ip, IpAddr netmask, IpAddr gateway, IpAddr dns); //W/o DHCP
- virtual ~EthernetNetIf();
-
- ///Brings the interface up
- /**
- Uses DHCP if necessary
- @param timeout_ms : You can set the timeout parameter in milliseconds, if not it defaults to 15s
- @return : ETH_OK on success or ETH_TIMEOUT on timeout
- */
- EthernetErr setup(int timeout_ms = 15000);
-
- virtual void poll();
-
-private:
- Timer m_ethArpTimer;
- Timer m_dhcpCoarseTimer;
- Timer m_dhcpFineTimer;
- Timer m_igmpTimer;
-
- bool m_useDhcp;
-
- netif* m_pNetIf;
-
- IpAddr m_netmask;
- IpAddr m_gateway;
-
- const char* m_hostname;
-
-};
-
-#endif
-
--- a/LPC2368/if/lwip/LwipNetIf.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef LWIPNETIF_H
-#define LWIPNETIF_H
-
-//class Ticker;
-#include "mbed.h"
-
-#define NET_LWIP_STACK 1
-#include "core/net.h"
-#include "if/net/netif.h"
-/*
-#include "lwipNetTcpSocket.h"
-#include "lwipNetUdpSocket.h"
-#include "lwipNetDnsRequest.h"
-*/
-
-class LwipNetIf : public NetIf
-{
-public:
- LwipNetIf();
- virtual ~LwipNetIf();
-
- void init();
-
- virtual NetTcpSocket* tcpSocket(); //Create a new tcp socket
- virtual NetUdpSocket* udpSocket(); //Create a new udp socket
- virtual NetDnsRequest* dnsRequest(const char* hostname); //Create a new NetDnsRequest object
- virtual NetDnsRequest* dnsRequest(Host* pHost); //Create a new NetDnsRequest object
-
- virtual void poll();
-
-private:
- Timer m_tcpTimer;
- Timer m_dnsTimer;
-
- bool m_init;
-
-};
-
-#endif
--- a/LPC2368/if/lwip/lwipNetDnsRequest.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef LWIPNETDNSREQUEST_H
-#define LWIPNETDNSREQUEST_H
-
-#define NET_LWIP_STACK 1
-#include "if/net/netdnsrequest.h"
-
-//struct ip_addr_t;
-#include "lwip/ip_addr.h"
-
-class LwipNetDnsRequest : public NetDnsRequest
-{
-public:
- LwipNetDnsRequest(const char* hostname);
- LwipNetDnsRequest(Host* pHost);
- virtual ~LwipNetDnsRequest();
-
- //Execute request & return OK if found, NOTFOUND or ERROR on error, or PROCESSING if the request has not completed yet
- virtual void poll();
-
- virtual void close();
-
-protected:
- void foundCb(const char *name, ip_addr_t *ipaddr);
-
-private:
- enum LwipNetDnsState
- {
- LWIPNETDNS_START,
- LWIPNETDNS_PROCESSING, //Req has not completed
- LWIPNETDNS_NOTFOUND,
- LWIPNETDNS_ERROR,
- LWIPNETDNS_OK
- };
-
- LwipNetDnsState m_state;
- bool m_cbFired;
-
- //Static callbacks : Transforms into a C++ callback
- static void sFoundCb(const char *name, ip_addr_t *ipaddr, void *arg);
-
- bool m_closing;
-};
-
-#endif
--- a/LPC2368/if/lwip/lwipNetTcpSocket.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef LWIPNETTCPSOCKET_H
-#define LWIPNETTCPSOCKET_H
-
-#define NET_LWIP_STACK 1
-#include "if/net/nettcpsocket.h"
-#include "LwipNetIf.h"
-
-#include "stdint.h"
-
-//Implements NetTcpSockets over lwIP raw API
-
-struct tcp_pcb; //Represents a Tcp Connection, "Protocol Control Block", see rawapi.txt & tcp.h
-struct pbuf; //Lwip Buffer Container
-
-typedef signed char err_t;
-typedef uint16_t u16_t;
-
-class LwipNetTcpSocket: public NetTcpSocket
-{
-public:
- LwipNetTcpSocket(tcp_pcb* pPcb = NULL); //Passes a pcb if already created (by an accept req for instance), in that case transfers ownership
- virtual ~LwipNetTcpSocket();
-
- virtual NetTcpSocketErr bind(const Host& me);
- virtual NetTcpSocketErr listen();
- virtual NetTcpSocketErr connect(const Host& host);
- virtual NetTcpSocketErr accept(Host* pClient, NetTcpSocket** ppNewNetTcpSocket);
-
- virtual int /*if < 0 : NetTcpSocketErr*/ send(const char* buf, int len);
- virtual int /*if < 0 : NetTcpSocketErr*/ recv(char* buf, int len);
-
- virtual NetTcpSocketErr close();
-
- virtual NetTcpSocketErr poll();
-
-protected:
- volatile tcp_pcb* m_pPcb;
-
- //Events callbacks from lwIp
- err_t acceptCb(tcp_pcb* newpcb, err_t err);
- err_t connectedCb(tcp_pcb* tpcb, err_t err);
-
- void errCb(err_t err);
-
- err_t sentCb(tcp_pcb* tpcb, u16_t len);
- err_t recvCb(tcp_pcb* tpcb, pbuf *p, err_t err);
-
-private:
- void cleanUp(); //Flush input buffer
-
-// queue<tcp_pcb*> m_lpInPcb; //Incoming connections that have not been accepted yet
- queue<LwipNetTcpSocket*> m_lpInNetTcpSocket; //Incoming connections that have not been accepted yet
-
- volatile pbuf* m_pReadPbuf; //Ptr to read buffer
-
- //Static callbacks : Transforms into a C++ callback
- static err_t sAcceptCb(void *arg, struct tcp_pcb *newpcb, err_t err);
- static err_t sConnectedCb(void *arg, struct tcp_pcb *tpcb, err_t err);
-
- static void sErrCb(void *arg, err_t err);
-
- static err_t sSentCb(void *arg, struct tcp_pcb *tpcb, u16_t len);
- static err_t sRecvCb(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err);
-
-};
-
-#endif
--- a/LPC2368/if/lwip/lwipNetUdpSocket.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef LWIPNETUDPSOCKET_H
-#define LWIPNETUDPSOCKET_H
-
-#define NET_LWIP_STACK 1
-//#include "lwip/ip_addr.h"
-#include "if/net/netudpsocket.h"
-#include "LwipNetIf.h"
-
-#include "stdint.h"
-
-#include <list>
-using std::list;
-
-//Implements NetUdpSockets over lwIP raw API
-
-struct udp_pcb; //Represents a Udp Connection, "Protocol Control Block", see rawapi.txt & udp.h
-struct pbuf; //Lwip Buffer Container
-typedef struct ip_addr ip_addr_t;
-
-//typedef signed char err_t;
-typedef uint16_t u16_t;
-
-class LwipNetUdpSocket: public NetUdpSocket
-{
-public:
- LwipNetUdpSocket(udp_pcb* pPcb = NULL); //Passes a pcb if already created (by an accept req for instance), in that case transfers ownership
- virtual ~LwipNetUdpSocket();
-
- virtual NetUdpSocketErr bind(const Host& me);
-
- virtual int /*if < 0 : NetUdpSocketErr*/ sendto(const char* buf, int len, Host* pHost);
- virtual int /*if < 0 : NetUdpSocketErr*/ recvfrom(char* buf, int len, Host* pHost);
-
- virtual NetUdpSocketErr close();
-
- virtual NetUdpSocketErr poll();
-
-protected:
- volatile udp_pcb* m_pPcb;
-
- //Event callback from lwIp
- void recvCb(udp_pcb* pcb, struct pbuf* p, ip_addr_t* addr, u16_t port);
-
-private:
- void cleanUp(); //Flush input buffer
- struct InPacket
- {
- volatile pbuf* pBuf;
- ip_addr_t addr;
- u16_t port;
- };
-
- list<InPacket> m_lInPkt;
- IpAddr m_multicastGroup;
-
- //Static callback : Transforms into a C++ callback
- static void sRecvCb(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port);
-
-};
-
-#endif
--- a/LPC2368/if/net/netdnsrequest.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef NETDNSREQUEST_H
-#define NETDNSREQUEST_H
-
-//class Socket;
-class Host;
-//class NetService;
-class NetDnsRequest;
-
-#include "netservice.h"
-#include "ipaddr.h"
-#include "host.h"
-
-enum NetDnsReply
-{
- NETDNS_PRTCL,
- NETDNS_NOTFOUND, //Hostname is unknown
- NETDNS_ERROR, //Problem with DNS Service
- //...
- NETDNS_FOUND,
-};
-
-class NetDnsRequest : public NetService
-{
-public:
- NetDnsRequest(const char* hostname);
- NetDnsRequest(Host* pHost);
- virtual ~NetDnsRequest();
-
- class CDummy;
- template<class T>
- //Linker bug : Must be defined here :(
- void setOnReply( T* pItem, void (T::*pMethod)(NetDnsReply) )
- {
- m_pCbItem = (CDummy*) pItem;
- m_pCbMeth = (void (CDummy::*)(NetDnsReply)) pMethod;
- }
-
- //Execute request & return OK if found, NOTFOUND or ERROR on error, or PROCESSING if the request has not completed yet
- // virtual DnsErr pollState() = 0;
- virtual void poll() = 0; //NetService fn
-
- void getResult(IpAddr* pIp);
-
- virtual void close();
-
-protected:
- void onReply(NetDnsReply reply); //Must be called by impl when the request completes
-
- IpAddr m_ip;
- char* m_hostname;
-
-private:
- CDummy* m_pCbItem;
- void (CDummy::*m_pCbMeth)(NetDnsReply);
-
- Host* m_pHost;
-
- bool m_closed;
-};
-
-#endif
--- a/LPC2368/if/net/netif.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef NETIF_H
-#define NETIF_H
-
-#include "core/ipaddr.h"
-/*
-#include "nettcpsocket.h"
-#include "netudpsocket.h"
-#include "netdnsrequest.h"
-*/
-class NetTcpSocket;
-class NetUdpSocket;
-class NetDnsRequest;
-
-#if 0
-enum NetifEvent
-{
- NETIF_CONNECTED, //Connected, can create & use sockets now
- NETIF_DNSREPLY,
- NETIF_DISCONNECTED
-};
-#endif
-
-class NetIf
-{
-public:
- NetIf();
- virtual ~NetIf();
- virtual NetTcpSocket* tcpSocket() = 0; //Create a new tcp socket
- virtual NetUdpSocket* udpSocket() = 0; //Create a new udp socket
- virtual void poll() = 0;
- virtual NetDnsRequest* dnsRequest(const char* hostname) = 0; //Create a new NetDnsRequest object
- virtual NetDnsRequest* dnsRequest(Host* pHost) = 0; //Create a new NetDnsRequest object
-
- //!Returns the IP of the interface once it's connected
- IpAddr getIp() const;
-
-protected:
- IpAddr m_ip;
-};
-
-#endif
--- a/LPC2368/if/net/nettcpsocket.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef NETTCPSOCKET_H
-#define NETTCPSOCKET_H
-
-#include "net.h"
-#include "host.h"
-
-#include <queue>
-using std::queue;
-
-//Implements a Berkeley-like socket if
-//Can be interfaced either to lwip or a Telit module
-
-enum NetTcpSocketErr
-{
- __NETTCPSOCKET_MIN = -0xFFFF,
- NETTCPSOCKET_SETUP, //NetTcpSocket not properly configured
- NETTCPSOCKET_TIMEOUT,
- NETTCPSOCKET_IF, //If has problems
- NETTCPSOCKET_MEM, //Not enough mem
- NETTCPSOCKET_INUSE, //If/Port is in use
- NETTCPSOCKET_EMPTY, //Connections queue is empty
- NETTCPSOCKET_RST, // Connection was reset by remote host
-//...
- NETTCPSOCKET_OK = 0
-};
-
-enum NetTcpSocketEvent
-{
- NETTCPSOCKET_CONNECTED, //Connected to host, must call accept() if we were listening
- NETTCPSOCKET_ACCEPT, //Connected to client
- NETTCPSOCKET_READABLE, //Data in buf
- NETTCPSOCKET_WRITEABLE, //Can write data to buf
- NETTCPSOCKET_CONTIMEOUT,
- NETTCPSOCKET_CONRST,
- NETTCPSOCKET_CONABRT,
- NETTCPSOCKET_ERROR,
- NETTCPSOCKET_DISCONNECTED
-};
-
-
-class NetTcpSocket
-{
-public:
- NetTcpSocket();
- virtual ~NetTcpSocket(); //close()
-
- virtual NetTcpSocketErr bind(const Host& me) = 0;
- virtual NetTcpSocketErr listen() = 0;
- virtual NetTcpSocketErr connect(const Host& host) = 0;
- virtual NetTcpSocketErr accept(Host* pClient, NetTcpSocket** ppNewNetTcpSocket) = 0;
-
- virtual int /*if < 0 : NetTcpSocketErr*/ send(const char* buf, int len) = 0;
- virtual int /*if < 0 : NetTcpSocketErr*/ recv(char* buf, int len) = 0;
-
- virtual NetTcpSocketErr close() = 0;
-
- virtual NetTcpSocketErr poll() = 0;
-
- class CDummy;
- //Callbacks
- template<class T>
- //Linker bug : Must be defined here :(
- void setOnEvent( T* pItem, void (T::*pMethod)(NetTcpSocketEvent) )
- {
- m_pCbItem = (CDummy*) pItem;
- m_pCbMeth = (void (CDummy::*)(NetTcpSocketEvent)) pMethod;
- }
-
- void resetOnEvent(); //Disable callback
-
-protected:
- void queueEvent(NetTcpSocketEvent e);
- void discardEvents();
- void flushEvents(); //to be called during polling
-
- Host m_host;
- Host m_client;
-
- friend class Net;
- int m_refs;
-
- bool m_closed;
- bool m_removed;
-
-private:
- //We do not want to execute user code in interrupt routines, so we queue events until the server is polled
- //If we port this to a multithreaded OS, we could avoid this (however some functions here are not thread-safe, so beware ;) )
- void onEvent(NetTcpSocketEvent e); //To be called on poll
- CDummy* m_pCbItem;
- void (CDummy::*m_pCbMeth)(NetTcpSocketEvent);
- queue<NetTcpSocketEvent> m_events;
-
-};
-
-#endif
--- a/LPC2368/if/net/netudpsocket.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef NETUDPSOCKET_H
-#define NETUDPSOCKET_H
-
-#include "net.h"
-#include "host.h"
-
-#include <queue>
-using std::queue;
-
-//Implements a Berkeley-like socket if
-//Can be interfaced either to lwip or a Telit module
-
-enum NetUdpSocketErr
-{
- __NETUDPSOCKET_MIN = -0xFFFF,
- NETUDPSOCKET_SETUP, //NetUdpSocket not properly configured
- NETUDPSOCKET_IF, //If has problems
- NETUDPSOCKET_MEM, //Not enough mem
- NETUDPSOCKET_INUSE, //If/Port is in use
-//...
- NETUDPSOCKET_OK = 0
-};
-
-enum NetUdpSocketEvent //Only one lonely event here... but who knows, maybe some day there'll be another one!
-{
- NETUDPSOCKET_READABLE, //Data in buf
-};
-
-
-class NetUdpSocket
-{
-public:
- NetUdpSocket();
- virtual ~NetUdpSocket(); //close()
-
- virtual NetUdpSocketErr bind(const Host& me) = 0;
-
- virtual int /*if < 0 : NetUdpSocketErr*/ sendto(const char* buf, int len, Host* pHost) = 0;
- virtual int /*if < 0 : NetUdpSocketErr*/ recvfrom(char* buf, int len, Host* pHost) = 0;
-
- /* TODO NTH : printf / scanf helpers that call send/recv */
-
- virtual NetUdpSocketErr close() = 0;
-
- virtual NetUdpSocketErr poll() = 0;
-
- class CDummy;
- //Callbacks
- template<class T>
- //Linker bug : Must be defined here :(
- void setOnEvent( T* pItem, void (T::*pMethod)(NetUdpSocketEvent) )
- {
- m_pCbItem = (CDummy*) pItem;
- m_pCbMeth = (void (CDummy::*)(NetUdpSocketEvent)) pMethod;
- }
-
- void resetOnEvent(); //Disable callback
-
-protected:
- void queueEvent(NetUdpSocketEvent e);
- void discardEvents();
- void flushEvents(); //to be called during polling
-
- Host m_host;
- Host m_client;
-
- friend class Net;
- int m_refs;
-
- bool m_closed;
- bool m_removed;
-
-private:
- //We do not want to execute user code in interrupt routines, so we queue events until the server is polled
- //If we port this to a multithreaded OS, we could avoid this (however some functions here are not thread-safe, so beware ;) )
- void onEvent(NetUdpSocketEvent e); //To be called on poll
- CDummy* m_pCbItem;
- void (CDummy::*m_pCbMeth)(NetUdpSocketEvent);
- queue<NetUdpSocketEvent> m_events;
-
-};
-
-#endif
--- a/LPC2368/lwip/arch/cc.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* - * Author: Adam Dunkels <adam@sics.se> - * - */ -#ifndef __LWIP_ARCH_CC_H__ -#define __LWIP_ARCH_CC_H__ - -#define LITTLE_ENDIAN 1234 - -#define BYTE_ORDER LITTLE_ENDIAN - -typedef unsigned char u8_t; -typedef signed char s8_t; -typedef unsigned short u16_t; -typedef signed short s16_t; -typedef unsigned int u32_t; -typedef signed int s32_t; -typedef unsigned int mem_ptr_t; - -#ifndef NULL -#define NULL 0 -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#include <stdlib.h> -#define LWIP_RAND rand - -#define LWIP_PLATFORM_DIAG(x) DBG x -#define LWIP_PLATFORM_ASSERT(x) DBG(x) - -#define LWIP_PROVIDE_ERRNO - -#define U16_F "hu" -#define S16_F "hd" -#define X16_F "hx" -#define U32_F "lu" -#define S32_F "ld" -#define X32_F "lx" - -#if 0 -/*Create compilation problems, and according to http://www.mail-archive.com/lwip-users@nongnu.org/msg06786.html, -lwIP uses packed structures, so packing the field is not really a good idea ;) */ -#define PACK_STRUCT_FIELD(x) __packed x -#else -#define PACK_STRUCT_FIELD(x) x -#endif - -#define PACK_STRUCT_STRUCT -#define PACK_STRUCT_BEGIN __packed -#define PACK_STRUCT_END - -#define LWIP_CHKSUM_ALGORITHM 3 - - -#endif /* __LWIP_ARCH_CC_H__ */
--- a/LPC2368/lwip/arch/perf.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
- * Author: Adam Dunkels <adam@sics.se>
- *
- */
-#ifndef __LWIP_ARCH_PERF_H__
-#define __LWIP_ARCH_PERF_H__
-
-#define PERF_START
-#define PERF_STOP(x)
-
-#define perf_init(fname)
-
-#if 0
-#ifdef __cplusplus
-inline
-#endif
-void perf_init(char *fname) {
- return;
-}
-#endif
-
-
-#endif /* __LWIP_ARCH_PERF_H__ */
--- a/LPC2368/lwip/arch/sys_arch.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Author: Adam Dunkels <adam@sics.se>
- *
- */
-#ifndef __LWIP_SYS_ARCH_H__
-#define __LWIP_SYS_ARCH_H__
-
-typedef unsigned int u32_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//DG 2010
-void sys_init(void); /* To be called first */
-u32_t sys_jiffies(void); /* since power up. */
-
-/** Returns the current time in milliseconds,
- * may be the same as sys_jiffies or at least based on it. */
-u32_t sys_now(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* __LWIP_ARCH_CC_H__ */
--- a/LPC2368/lwip/include/ipv4/lwip/autoip.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/**
- * @file
- *
- * AutoIP Automatic LinkLocal IP Configuration
- */
-
-/*
- *
- * Copyright (c) 2007 Dominik Spies <kontakt@dspies.de>
- * 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: Dominik Spies <kontakt@dspies.de>
- *
- * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform
- * with RFC 3927.
- *
- *
- * Please coordinate changes and requests with Dominik Spies
- * <kontakt@dspies.de>
- */
-
-#ifndef __LWIP_AUTOIP_H__
-#define __LWIP_AUTOIP_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/netif.h"
-#include "lwip/udp.h"
-#include "netif/etharp.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* AutoIP Timing */
-#define AUTOIP_TMR_INTERVAL 100
-#define AUTOIP_TICKS_PER_SECOND (1000 / AUTOIP_TMR_INTERVAL)
-
-/* RFC 3927 Constants */
-#define PROBE_WAIT 1 /* second (initial random delay) */
-#define PROBE_MIN 1 /* second (minimum delay till repeated probe) */
-#define PROBE_MAX 2 /* seconds (maximum delay till repeated probe) */
-#define PROBE_NUM 3 /* (number of probe packets) */
-#define ANNOUNCE_NUM 2 /* (number of announcement packets) */
-#define ANNOUNCE_INTERVAL 2 /* seconds (time between announcement packets) */
-#define ANNOUNCE_WAIT 2 /* seconds (delay before announcing) */
-#define MAX_CONFLICTS 10 /* (max conflicts before rate limiting) */
-#define RATE_LIMIT_INTERVAL 60 /* seconds (delay between successive attempts) */
-#define DEFEND_INTERVAL 10 /* seconds (min. wait between defensive ARPs) */
-
-/* AutoIP client states */
-#define AUTOIP_STATE_OFF 0
-#define AUTOIP_STATE_PROBING 1
-#define AUTOIP_STATE_ANNOUNCING 2
-#define AUTOIP_STATE_BOUND 3
-
-struct autoip
-{
- ip_addr_t llipaddr; /* the currently selected, probed, announced or used LL IP-Address */
- u8_t state; /* current AutoIP state machine state */
- u8_t sent_num; /* sent number of probes or announces, dependent on state */
- u16_t ttw; /* ticks to wait, tick is AUTOIP_TMR_INTERVAL long */
- u8_t lastconflict; /* ticks until a conflict can be solved by defending */
- u8_t tried_llipaddr; /* total number of probed/used Link Local IP-Addresses */
-};
-
-
-/** Init srand, has to be called before entering mainloop */
-void autoip_init(void);
-
-/** Set a struct autoip allocated by the application to work with */
-void autoip_set_struct(struct netif *netif, struct autoip *autoip);
-
-/** Start AutoIP client */
-err_t autoip_start(struct netif *netif);
-
-/** Stop AutoIP client */
-err_t autoip_stop(struct netif *netif);
-
-/** Handles every incoming ARP Packet, called by etharp_arp_input */
-void autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr);
-
-/** Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds */
-void autoip_tmr(void);
-
-/** Handle a possible change in the network configuration */
-void autoip_network_changed(struct netif *netif);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_AUTOIP */
-
-#endif /* __LWIP_AUTOIP_H__ */
--- a/LPC2368/lwip/include/ipv4/lwip/icmp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * 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 __LWIP_ICMP_H__
-#define __LWIP_ICMP_H__
-
-#include "lwip/opt.h"
-#include "lwip/pbuf.h"
-#include "lwip/ip_addr.h"
-#include "lwip/netif.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ICMP_ER 0 /* echo reply */
-#define ICMP_DUR 3 /* destination unreachable */
-#define ICMP_SQ 4 /* source quench */
-#define ICMP_RD 5 /* redirect */
-#define ICMP_ECHO 8 /* echo */
-#define ICMP_TE 11 /* time exceeded */
-#define ICMP_PP 12 /* parameter problem */
-#define ICMP_TS 13 /* timestamp */
-#define ICMP_TSR 14 /* timestamp reply */
-#define ICMP_IRQ 15 /* information request */
-#define ICMP_IR 16 /* information reply */
-
-enum icmp_dur_type {
- ICMP_DUR_NET = 0, /* net unreachable */
- ICMP_DUR_HOST = 1, /* host unreachable */
- ICMP_DUR_PROTO = 2, /* protocol unreachable */
- ICMP_DUR_PORT = 3, /* port unreachable */
- ICMP_DUR_FRAG = 4, /* fragmentation needed and DF set */
- ICMP_DUR_SR = 5 /* source route failed */
-};
-
-enum icmp_te_type {
- ICMP_TE_TTL = 0, /* time to live exceeded in transit */
- ICMP_TE_FRAG = 1 /* fragment reassembly time exceeded */
-};
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-/* This is the standard ICMP header only that the u32_t data
- * is splitted to two u16_t like ICMP echo needs it.
- * This header is also used for other ICMP types that do not
- * use the data part.
- */
-PACK_STRUCT_BEGIN
-struct icmp_echo_hdr {
- PACK_STRUCT_FIELD(u8_t type);
- PACK_STRUCT_FIELD(u8_t code);
- PACK_STRUCT_FIELD(u16_t chksum);
- PACK_STRUCT_FIELD(u16_t id);
- PACK_STRUCT_FIELD(u16_t seqno);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#define ICMPH_TYPE(hdr) ((hdr)->type)
-#define ICMPH_CODE(hdr) ((hdr)->code)
-
-/* Combines type and code to an u16_t */
-#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t))
-#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c))
-
-
-#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */
-
-void icmp_input(struct pbuf *p, struct netif *inp);
-void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t);
-void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t);
-
-#endif /* LWIP_ICMP */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_ICMP_H__ */
--- a/LPC2368/lwip/include/ipv4/lwip/igmp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2002 CITEL Technologies Ltd.
- * 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. Neither the name of CITEL Technologies Ltd nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``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 CITEL TECHNOLOGIES OR CONTRIBUTORS 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 a contribution to the lwIP TCP/IP stack.
- * The Swedish Institute of Computer Science and Adam Dunkels
- * are specifically granted permission to redistribute this
- * source code.
-*/
-
-#ifndef __LWIP_IGMP_H__
-#define __LWIP_IGMP_H__
-
-#include "lwip/opt.h"
-#include "lwip/ip_addr.h"
-#include "lwip/netif.h"
-#include "lwip/pbuf.h"
-
-#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* IGMP timer */
-#define IGMP_TMR_INTERVAL 100 /* Milliseconds */
-#define IGMP_V1_DELAYING_MEMBER_TMR (1000/IGMP_TMR_INTERVAL)
-#define IGMP_JOIN_DELAYING_MEMBER_TMR (500 /IGMP_TMR_INTERVAL)
-
-/* MAC Filter Actions, these are passed to a netif's
- * igmp_mac_filter callback function. */
-#define IGMP_DEL_MAC_FILTER 0
-#define IGMP_ADD_MAC_FILTER 1
-
-
-/**
- * igmp group structure - there is
- * a list of groups for each interface
- * these should really be linked from the interface, but
- * if we keep them separate we will not affect the lwip original code
- * too much
- *
- * There will be a group for the all systems group address but this
- * will not run the state machine as it is used to kick off reports
- * from all the other groups
- */
-struct igmp_group {
- /** next link */
- struct igmp_group *next;
- /** interface on which the group is active */
- struct netif *netif;
- /** multicast address */
- ip_addr_t group_address;
- /** signifies we were the last person to report */
- u8_t last_reporter_flag;
- /** current state of the group */
- u8_t group_state;
- /** timer for reporting, negative is OFF */
- u16_t timer;
- /** counter of simultaneous uses */
- u8_t use;
-};
-
-/* Prototypes */
-void igmp_init(void);
-err_t igmp_start(struct netif *netif);
-err_t igmp_stop(struct netif *netif);
-void igmp_report_groups(struct netif *netif);
-struct igmp_group *igmp_lookfor_group(struct netif *ifp, ip_addr_t *addr);
-void igmp_input(struct pbuf *p, struct netif *inp, ip_addr_t *dest);
-err_t igmp_joingroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr);
-err_t igmp_leavegroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr);
-void igmp_tmr(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_IGMP */
-
-#endif /* __LWIP_IGMP_H__ */
--- a/LPC2368/lwip/include/ipv4/lwip/inet.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
- * 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 __LWIP_INET_H__
-#define __LWIP_INET_H__
-
-#include "lwip/opt.h"
-#include "lwip/def.h"
-#include "lwip/ip_addr.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For compatibility with BSD code */
-struct in_addr {
- u32_t s_addr;
-};
-
-/** 255.255.255.255 */
-#define INADDR_NONE IPADDR_NONE
-/** 127.0.0.1 */
-#define INADDR_LOOPBACK IPADDR_LOOPBACK
-/** 0.0.0.0 */
-#define INADDR_ANY IPADDR_ANY
-/** 255.255.255.255 */
-#define INADDR_BROADCAST IPADDR_BROADCAST
-
-/* Definitions of the bits in an Internet address integer.
-
- On subnets, host and network parts are found according to
- the subnet mask, not these masks. */
-#define IN_CLASSA(a) IP_CLASSA(a)
-#define IN_CLASSA_NET IP_CLASSA_NET
-#define IN_CLASSA_NSHIFT IP_CLASSA_NSHIFT
-#define IN_CLASSA_HOST IP_CLASSA_HOST
-#define IN_CLASSA_MAX IP_CLASSA_MAX
-
-#define IN_CLASSB(b) IP_CLASSB(b)
-#define IN_CLASSB_NET IP_CLASSB_NET
-#define IN_CLASSB_NSHIFT IP_CLASSB_NSHIFT
-#define IN_CLASSB_HOST IP_CLASSB_HOST
-#define IN_CLASSB_MAX IP_CLASSB_MAX
-
-#define IN_CLASSC(c) IP_CLASSC(c)
-#define IN_CLASSC_NET IP_CLASSC_NET
-#define IN_CLASSC_NSHIFT IP_CLASSC_NSHIFT
-#define IN_CLASSC_HOST IP_CLASSC_HOST
-#define IN_CLASSC_MAX IP_CLASSC_MAX
-
-#define IN_CLASSD(d) IP_CLASSD(d)
-#define IN_CLASSD_NET IP_CLASSD_NET /* These ones aren't really */
-#define IN_CLASSD_NSHIFT IP_CLASSD_NSHIFT /* net and host fields, but */
-#define IN_CLASSD_HOST IP_CLASSD_HOST /* routing needn't know. */
-#define IN_CLASSD_MAX IP_CLASSD_MAX
-
-#define IN_MULTICAST(a) IP_MULTICAST(a)
-
-#define IN_EXPERIMENTAL(a) IP_EXPERIMENTAL(a)
-#define IN_BADCLASS(a) IP_BADCLASS(a)
-
-#define IN_LOOPBACKNET IP_LOOPBACKNET
-
-#define inet_addr_from_ipaddr(target_inaddr, source_ipaddr) ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr))
-#define inet_addr_to_ipaddr(target_ipaddr, source_inaddr) (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr))
-/* ATTENTION: the next define only works because both s_addr and ip_addr_t are an u32_t effectively! */
-#define inet_addr_to_ipaddr_p(target_ipaddr_p, source_inaddr) ((target_ipaddr_p) = (ip_addr_t*)&((source_inaddr)->s_addr))
-
-/* directly map this to the lwip internal functions */
-#define inet_addr(cp) ipaddr_addr(cp)
-#define inet_aton(cp, addr) ipaddr_aton(cp, (ip_addr_t*)addr)
-#define inet_ntoa(addr) ipaddr_ntoa((ip_addr_t*)&(addr))
-#define inet_ntoa_r(addr, buf, buflen) ipaddr_ntoa_r((ip_addr_t*)&(addr), buf, buflen)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_INET_H__ */
--- a/LPC2368/lwip/include/ipv4/lwip/inet_chksum.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * 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 __LWIP_INET_CHKSUM_H__
-#define __LWIP_INET_CHKSUM_H__
-
-#include "lwip/opt.h"
-
-#include "lwip/pbuf.h"
-#include "lwip/ip_addr.h"
-
-/** Swap the bytes in an u16_t: much like htons() for little-endian */
-#ifndef SWAP_BYTES_IN_WORD
-#if LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN)
-/* little endian and PLATFORM_BYTESWAP defined */
-#define SWAP_BYTES_IN_WORD(w) LWIP_PLATFORM_HTONS(w)
-#else /* LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN) */
-/* can't use htons on big endian (or PLATFORM_BYTESWAP not defined)... */
-#define SWAP_BYTES_IN_WORD(w) (((w) & 0xff) << 8) | (((w) & 0xff00) >> 8)
-#endif /* LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN)*/
-#endif /* SWAP_BYTES_IN_WORD */
-
-/** Split an u32_t in two u16_ts and add them up */
-#ifndef FOLD_U32T
-#define FOLD_U32T(u) (((u) >> 16) + ((u) & 0x0000ffffUL))
-#endif
-
-#if LWIP_CHECKSUM_ON_COPY
-/** Function-like macro: same as MEMCPY but returns the checksum of copied data
- as u16_t */
-#ifndef LWIP_CHKSUM_COPY
-#define LWIP_CHKSUM_COPY(dst, src, len) lwip_chksum_copy(dst, src, len)
-#ifndef LWIP_CHKSUM_COPY_ALGORITHM
-#define LWIP_CHKSUM_COPY_ALGORITHM 1
-#endif /* LWIP_CHKSUM_COPY_ALGORITHM */
-#endif /* LWIP_CHKSUM_COPY */
-#else /* LWIP_CHECKSUM_ON_COPY */
-#define LWIP_CHKSUM_COPY_ALGORITHM 0
-#endif /* LWIP_CHECKSUM_ON_COPY */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-u16_t inet_chksum(void *dataptr, u16_t len);
-u16_t inet_chksum_pbuf(struct pbuf *p);
-u16_t inet_chksum_pseudo(struct pbuf *p,
- ip_addr_t *src, ip_addr_t *dest,
- u8_t proto, u16_t proto_len);
-u16_t inet_chksum_pseudo_partial(struct pbuf *p,
- ip_addr_t *src, ip_addr_t *dest,
- u8_t proto, u16_t proto_len, u16_t chksum_len);
-#if LWIP_CHKSUM_COPY_ALGORITHM
-u16_t lwip_chksum_copy(void *dst, const void *src, u16_t len);
-#endif /* LWIP_CHKSUM_COPY_ALGORITHM */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_INET_H__ */
-
--- a/LPC2368/lwip/include/ipv4/lwip/ip.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-/*
- * 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 __LWIP_IP_H__
-#define __LWIP_IP_H__
-
-#include "lwip/opt.h"
-
-#include "lwip/def.h"
-#include "lwip/pbuf.h"
-#include "lwip/ip_addr.h"
-#include "lwip/err.h"
-#include "lwip/netif.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Currently, the function ip_output_if_opt() is only used with IGMP */
-#define IP_OPTIONS_SEND LWIP_IGMP
-
-#define IP_HLEN 20
-
-#define IP_PROTO_ICMP 1
-#define IP_PROTO_IGMP 2
-#define IP_PROTO_UDP 17
-#define IP_PROTO_UDPLITE 136
-#define IP_PROTO_TCP 6
-
-/* This is passed as the destination address to ip_output_if (not
- to ip_output), meaning that an IP header already is constructed
- in the pbuf. This is used when TCP retransmits. */
-#ifdef IP_HDRINCL
-#undef IP_HDRINCL
-#endif /* IP_HDRINCL */
-#define IP_HDRINCL NULL
-
-#if LWIP_NETIF_HWADDRHINT
-#define IP_PCB_ADDRHINT ;u8_t addr_hint
-#else
-#define IP_PCB_ADDRHINT
-#endif /* LWIP_NETIF_HWADDRHINT */
-
-/* This is the common part of all PCB types. It needs to be at the
- beginning of a PCB type definition. It is located here so that
- changes to this common part are made in one location instead of
- having to change all PCB structs. */
-#define IP_PCB \
- /* ip addresses in network byte order */ \
- ip_addr_t local_ip; \
- ip_addr_t remote_ip; \
- /* Socket options */ \
- u8_t so_options; \
- /* Type Of Service */ \
- u8_t tos; \
- /* Time To Live */ \
- u8_t ttl \
- /* link layer address resolution hint */ \
- IP_PCB_ADDRHINT
-
-struct ip_pcb {
-/* Common members of all PCB types */
- IP_PCB;
-};
-
-/*
- * Option flags per-socket. These are the same like SO_XXX.
- */
-/*#define SOF_DEBUG (u8_t)0x01U Unimplemented: turn on debugging info recording */
-#define SOF_ACCEPTCONN (u8_t)0x02U /* socket has had listen() */
-#define SOF_REUSEADDR (u8_t)0x04U /* allow local address reuse */
-#define SOF_KEEPALIVE (u8_t)0x08U /* keep connections alive */
-/*#define SOF_DONTROUTE (u8_t)0x10U Unimplemented: just use interface addresses */
-#define SOF_BROADCAST (u8_t)0x20U /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */
-/*#define SOF_USELOOPBACK (u8_t)0x40U Unimplemented: bypass hardware when possible */
-#define SOF_LINGER (u8_t)0x80U /* linger on close if data present */
-/*#define SOF_OOBINLINE (u16_t)0x0100U Unimplemented: leave received OOB data in line */
-/*#define SOF_REUSEPORT (u16_t)0x0200U Unimplemented: allow local address & port reuse */
-
-/* These flags are inherited (e.g. from a listen-pcb to a connection-pcb): */
-#define SOF_INHERITED (SOF_REUSEADDR|SOF_KEEPALIVE|SOF_LINGER/*|SOF_DEBUG|SOF_DONTROUTE|SOF_OOBINLINE*/)
-
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct ip_hdr {
- /* version / header length / type of service */
- PACK_STRUCT_FIELD(u16_t _v_hl_tos);
- /* total length */
- PACK_STRUCT_FIELD(u16_t _len);
- /* identification */
- PACK_STRUCT_FIELD(u16_t _id);
- /* fragment offset field */
- PACK_STRUCT_FIELD(u16_t _offset);
-#define IP_RF 0x8000 /* reserved fragment flag */
-#define IP_DF 0x4000 /* dont fragment flag */
-#define IP_MF 0x2000 /* more fragments flag */
-#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
- /* time to live */
- PACK_STRUCT_FIELD(u8_t _ttl);
- /* protocol*/
- PACK_STRUCT_FIELD(u8_t _proto);
- /* checksum */
- PACK_STRUCT_FIELD(u16_t _chksum);
- /* source and destination IP addresses */
- PACK_STRUCT_FIELD(ip_addr_p_t src);
- PACK_STRUCT_FIELD(ip_addr_p_t dest);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#define IPH_V(hdr) (ntohs((hdr)->_v_hl_tos) >> 12)
-#define IPH_HL(hdr) ((ntohs((hdr)->_v_hl_tos) >> 8) & 0x0f)
-#define IPH_TOS(hdr) (ntohs((hdr)->_v_hl_tos) & 0xff)
-#define IPH_LEN(hdr) ((hdr)->_len)
-#define IPH_ID(hdr) ((hdr)->_id)
-#define IPH_OFFSET(hdr) ((hdr)->_offset)
-#define IPH_TTL(hdr) ((hdr)->_ttl)
-#define IPH_PROTO(hdr) ((hdr)->_proto)
-#define IPH_CHKSUM(hdr) ((hdr)->_chksum)
-
-#define IPH_VHLTOS_SET(hdr, v, hl, tos) (hdr)->_v_hl_tos = (htons(((v) << 12) | ((hl) << 8) | (tos)))
-#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len)
-#define IPH_ID_SET(hdr, id) (hdr)->_id = (id)
-#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off)
-#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl = (u8_t)(ttl)
-#define IPH_PROTO_SET(hdr, proto) (hdr)->_proto = (u8_t)(proto)
-#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum)
-
-/** The interface that provided the packet for the current callback invocation. */
-extern struct netif *current_netif;
-/** Header of the input packet currently being processed. */
-extern const struct ip_hdr *current_header;
-/** Source IP address of current_header */
-extern ip_addr_t current_iphdr_src;
-/** Destination IP address of current_header */
-extern ip_addr_t current_iphdr_dest;
-
-#define ip_init() /* Compatibility define, not init needed. */
-struct netif *ip_route(ip_addr_t *dest);
-err_t ip_input(struct pbuf *p, struct netif *inp);
-err_t ip_output(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest,
- u8_t ttl, u8_t tos, u8_t proto);
-err_t ip_output_if(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest,
- u8_t ttl, u8_t tos, u8_t proto,
- struct netif *netif);
-#if LWIP_NETIF_HWADDRHINT
-err_t ip_output_hinted(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest,
- u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint);
-#endif /* LWIP_NETIF_HWADDRHINT */
-#if IP_OPTIONS_SEND
-err_t ip_output_if_opt(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest,
- u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options,
- u16_t optlen);
-#endif /* IP_OPTIONS_SEND */
-/** Get the interface that received the current packet.
- * This function must only be called from a receive callback (udp_recv,
- * raw_recv, tcp_accept). It will return NULL otherwise. */
-#define ip_current_netif() (current_netif)
-/** Get the IP header of the current packet.
- * This function must only be called from a receive callback (udp_recv,
- * raw_recv, tcp_accept). It will return NULL otherwise. */
-#define ip_current_header() (current_header)
-/** Source IP address of current_header */
-#define ip_current_src_addr() (¤t_iphdr_src)
-/** Destination IP address of current_header */
-#define ip_current_dest_addr() (¤t_iphdr_dest)
-
-#if IP_DEBUG
-void ip_debug_print(struct pbuf *p);
-#else
-#define ip_debug_print(p)
-#endif /* IP_DEBUG */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_IP_H__ */
-
-
--- a/LPC2368/lwip/include/ipv4/lwip/ip_addr.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*
- * 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 __LWIP_IP_ADDR_H__
-#define __LWIP_IP_ADDR_H__
-
-#include "lwip/opt.h"
-#include "lwip/def.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is the aligned version of ip_addr_t,
- used as local variable, on the stack, etc. */
-struct ip_addr {
- u32_t addr;
-};
-
-/* This is the packed version of ip_addr_t,
- used in network headers that are itself packed */
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct ip_addr_packed {
- PACK_STRUCT_FIELD(u32_t addr);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-/** ip_addr_t uses a struct for convenience only, so that the same defines can
- * operate both on ip_addr_t as well as on ip_addr_p_t. */
-typedef struct ip_addr ip_addr_t;
-typedef struct ip_addr_packed ip_addr_p_t;
-
-/*
- * struct ipaddr2 is used in the definition of the ARP packet format in
- * order to support compilers that don't have structure packing.
- */
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct ip_addr2 {
- PACK_STRUCT_FIELD(u16_t addrw[2]);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-/* Forward declaration to not include netif.h */
-struct netif;
-
-extern const ip_addr_t ip_addr_any;
-extern const ip_addr_t ip_addr_broadcast;
-
-/** IP_ADDR_ can be used as a fixed IP address
- * for the wildcard and the broadcast address
- */
-#define IP_ADDR_ANY ((ip_addr_t *)&ip_addr_any)
-#define IP_ADDR_BROADCAST ((ip_addr_t *)&ip_addr_broadcast)
-
-/** 255.255.255.255 */
-#define IPADDR_NONE ((u32_t)0xffffffffUL)
-/** 127.0.0.1 */
-#define IPADDR_LOOPBACK ((u32_t)0x7f000001UL)
-/** 0.0.0.0 */
-#define IPADDR_ANY ((u32_t)0x00000000UL)
-/** 255.255.255.255 */
-#define IPADDR_BROADCAST ((u32_t)0xffffffffUL)
-
-/* Definitions of the bits in an Internet address integer.
-
- On subnets, host and network parts are found according to
- the subnet mask, not these masks. */
-#define IP_CLASSA(a) ((((u32_t)(a)) & 0x80000000UL) == 0)
-#define IP_CLASSA_NET 0xff000000
-#define IP_CLASSA_NSHIFT 24
-#define IP_CLASSA_HOST (0xffffffff & ~IP_CLASSA_NET)
-#define IP_CLASSA_MAX 128
-
-#define IP_CLASSB(a) ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL)
-#define IP_CLASSB_NET 0xffff0000
-#define IP_CLASSB_NSHIFT 16
-#define IP_CLASSB_HOST (0xffffffff & ~IP_CLASSB_NET)
-#define IP_CLASSB_MAX 65536
-
-#define IP_CLASSC(a) ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL)
-#define IP_CLASSC_NET 0xffffff00
-#define IP_CLASSC_NSHIFT 8
-#define IP_CLASSC_HOST (0xffffffff & ~IP_CLASSC_NET)
-
-#define IP_CLASSD(a) (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL)
-#define IP_CLASSD_NET 0xf0000000 /* These ones aren't really */
-#define IP_CLASSD_NSHIFT 28 /* net and host fields, but */
-#define IP_CLASSD_HOST 0x0fffffff /* routing needn't know. */
-#define IP_MULTICAST(a) IP_CLASSD(a)
-
-#define IP_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL)
-#define IP_BADCLASS(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL)
-
-#define IP_LOOPBACKNET 127 /* official! */
-
-
-#if BYTE_ORDER == BIG_ENDIAN
-/** Set an IP address given by the four byte-parts */
-#define IP4_ADDR(ipaddr, a,b,c,d) \
- (ipaddr)->addr = ((u32_t)((a) & 0xff) << 24) | \
- ((u32_t)((b) & 0xff) << 16) | \
- ((u32_t)((c) & 0xff) << 8) | \
- (u32_t)((d) & 0xff)
-#else
-/** Set an IP address given by the four byte-parts.
- Little-endian version that prevents the use of htonl. */
-#define IP4_ADDR(ipaddr, a,b,c,d) \
- (ipaddr)->addr = ((u32_t)((d) & 0xff) << 24) | \
- ((u32_t)((c) & 0xff) << 16) | \
- ((u32_t)((b) & 0xff) << 8) | \
- (u32_t)((a) & 0xff)
-#endif
-
-/** MEMCPY-like copying of IP addresses where addresses are known to be
- * 16-bit-aligned if the port is correctly configured (so a port could define
- * this to copying 2 u16_t's) - no NULL-pointer-checking needed. */
-#ifndef IPADDR2_COPY
-#define IPADDR2_COPY(dest, src) SMEMCPY(dest, src, sizeof(ip_addr_t))
-#endif
-
-/** Copy IP address - faster than ip_addr_set: no NULL check */
-#define ip_addr_copy(dest, src) ((dest).addr = (src).addr)
-/** Safely copy one IP address to another (src may be NULL) */
-#define ip_addr_set(dest, src) ((dest)->addr = \
- ((src) == NULL ? 0 : \
- (src)->addr))
-/** Set complete address to zero */
-#define ip_addr_set_zero(ipaddr) ((ipaddr)->addr = 0)
-/** Set address to IPADDR_ANY (no need for htonl()) */
-#define ip_addr_set_any(ipaddr) ((ipaddr)->addr = IPADDR_ANY)
-/** Set address to loopback address */
-#define ip_addr_set_loopback(ipaddr) ((ipaddr)->addr = PP_HTONL(IPADDR_LOOPBACK))
-/** Safely copy one IP address to another and change byte order
- * from host- to network-order. */
-#define ip_addr_set_hton(dest, src) ((dest)->addr = \
- ((src) == NULL ? 0:\
- htonl((src)->addr)))
-/** IPv4 only: set the IP address given as an u32_t */
-#define ip4_addr_set_u32(dest_ipaddr, src_u32) ((dest_ipaddr)->addr = (src_u32))
-/** IPv4 only: get the IP address as an u32_t */
-#define ip4_addr_get_u32(src_ipaddr) ((src_ipaddr)->addr)
-
-/** Get the network address by combining host address with netmask */
-#define ip_addr_get_network(target, host, netmask) ((target)->addr = ((host)->addr) & ((netmask)->addr))
-
-/**
- * Determine if two address are on the same network.
- *
- * @arg addr1 IP address 1
- * @arg addr2 IP address 2
- * @arg mask network identifier mask
- * @return !0 if the network identifiers of both address match
- */
-#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \
- (mask)->addr) == \
- ((addr2)->addr & \
- (mask)->addr))
-#define ip_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr)
-
-#define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == IPADDR_ANY)
-
-#define ip_addr_isbroadcast(ipaddr, netif) ip4_addr_isbroadcast((ipaddr)->addr, (netif))
-u8_t ip4_addr_isbroadcast(u32_t addr, const struct netif *netif);
-
-#define ip_addr_netmask_valid(netmask) ip4_addr_netmask_valid((netmask)->addr)
-u8_t ip4_addr_netmask_valid(u32_t netmask);
-
-#define ip_addr_ismulticast(addr1) (((addr1)->addr & PP_HTONL(0xf0000000UL)) == PP_HTONL(0xe0000000UL))
-
-#define ip_addr_islinklocal(addr1) (((addr1)->addr & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xa9fe0000UL))
-
-#define ip_addr_debug_print(debug, ipaddr) \
- LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F, \
- ipaddr != NULL ? ip4_addr1_16(ipaddr) : 0, \
- ipaddr != NULL ? ip4_addr2_16(ipaddr) : 0, \
- ipaddr != NULL ? ip4_addr3_16(ipaddr) : 0, \
- ipaddr != NULL ? ip4_addr4_16(ipaddr) : 0))
-
-/* Get one byte from the 4-byte address */
-#define ip4_addr1(ipaddr) (((u8_t*)(ipaddr))[0])
-#define ip4_addr2(ipaddr) (((u8_t*)(ipaddr))[1])
-#define ip4_addr3(ipaddr) (((u8_t*)(ipaddr))[2])
-#define ip4_addr4(ipaddr) (((u8_t*)(ipaddr))[3])
-/* These are cast to u16_t, with the intent that they are often arguments
- * to printf using the U16_F format from cc.h. */
-#define ip4_addr1_16(ipaddr) ((u16_t)ip4_addr1(ipaddr))
-#define ip4_addr2_16(ipaddr) ((u16_t)ip4_addr2(ipaddr))
-#define ip4_addr3_16(ipaddr) ((u16_t)ip4_addr3(ipaddr))
-#define ip4_addr4_16(ipaddr) ((u16_t)ip4_addr4(ipaddr))
-
-/** For backwards compatibility */
-#define ip_ntoa(ipaddr) ipaddr_ntoa(ipaddr)
-
-u32_t ipaddr_addr(const char *cp);
-int ipaddr_aton(const char *cp, ip_addr_t *addr);
-/** returns ptr to static buffer; not reentrant! */
-char *ipaddr_ntoa(const ip_addr_t *addr);
-char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_IP_ADDR_H__ */
--- a/LPC2368/lwip/include/ipv4/lwip/ip_frag.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * 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: Jani Monoses <jani@iv.ro>
- *
- */
-
-#ifndef __LWIP_IP_FRAG_H__
-#define __LWIP_IP_FRAG_H__
-
-#include "lwip/opt.h"
-#include "lwip/err.h"
-#include "lwip/pbuf.h"
-#include "lwip/netif.h"
-#include "lwip/ip_addr.h"
-#include "lwip/ip.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if IP_REASSEMBLY
-/* The IP reassembly timer interval in milliseconds. */
-#define IP_TMR_INTERVAL 1000
-
-/* IP reassembly helper struct.
- * This is exported because memp needs to know the size.
- */
-struct ip_reassdata {
- struct ip_reassdata *next;
- struct pbuf *p;
- struct ip_hdr iphdr;
- u16_t datagram_len;
- u8_t flags;
- u8_t timer;
-};
-
-void ip_reass_init(void);
-void ip_reass_tmr(void);
-struct pbuf * ip_reass(struct pbuf *p);
-#endif /* IP_REASSEMBLY */
-
-#if IP_FRAG
-#if !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF
-/** A custom pbuf that holds a reference to another pbuf, which is freed
- * when this custom pbuf is freed. This is used to create a custom PBUF_REF
- * that points into the original pbuf. */
-struct pbuf_custom_ref {
- /** 'base class' */
- struct pbuf_custom pc;
- /** pointer to the original pbuf that is referenced */
- struct pbuf *original;
-};
-#endif /* !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF */
-
-err_t ip_frag(struct pbuf *p, struct netif *netif, ip_addr_t *dest);
-#endif /* IP_FRAG */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_IP_FRAG_H__ */
--- a/LPC2368/lwip/include/lwip/api.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,285 +0,0 @@
-/*
- * 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 __LWIP_API_H__
-#define __LWIP_API_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
-
-#include <stddef.h> /* for size_t */
-
-#include "lwip/netbuf.h"
-#include "lwip/sys.h"
-#include "lwip/ip_addr.h"
-#include "lwip/err.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Throughout this file, IP addresses and port numbers are expected to be in
- * the same byte order as in the corresponding pcb.
- */
-
-/* Flags for netconn_write (u8_t) */
-#define NETCONN_NOFLAG 0x00
-#define NETCONN_NOCOPY 0x00 /* Only for source code compatibility */
-#define NETCONN_COPY 0x01
-#define NETCONN_MORE 0x02
-#define NETCONN_DONTBLOCK 0x04
-
-/* Flags for struct netconn.flags (u8_t) */
-/** TCP: when data passed to netconn_write doesn't fit into the send buffer,
- this temporarily stores whether to wake up the original application task
- if data couldn't be sent in the first try. */
-#define NETCONN_FLAG_WRITE_DELAYED 0x01
-/** Should this netconn avoid blocking? */
-#define NETCONN_FLAG_NON_BLOCKING 0x02
-/** Was the last connect action a non-blocking one? */
-#define NETCONN_FLAG_IN_NONBLOCKING_CONNECT 0x04
-/** If this is set, a TCP netconn must call netconn_recved() to update
- the TCP receive window (done automatically if not set). */
-#define NETCONN_FLAG_NO_AUTO_RECVED 0x08
-/** If a nonblocking write has been rejected before, poll_tcp needs to
- check if the netconn is writable again */
-#define NETCONN_FLAG_CHECK_WRITESPACE 0x10
-
-
-/* Helpers to process several netconn_types by the same code */
-#define NETCONNTYPE_GROUP(t) (t&0xF0)
-#define NETCONNTYPE_DATAGRAM(t) (t&0xE0)
-
-/** Protocol family and type of the netconn */
-enum netconn_type {
- NETCONN_INVALID = 0,
- /* NETCONN_TCP Group */
- NETCONN_TCP = 0x10,
- /* NETCONN_UDP Group */
- NETCONN_UDP = 0x20,
- NETCONN_UDPLITE = 0x21,
- NETCONN_UDPNOCHKSUM= 0x22,
- /* NETCONN_RAW Group */
- NETCONN_RAW = 0x40
-};
-
-/** Current state of the netconn. Non-TCP netconns are always
- * in state NETCONN_NONE! */
-enum netconn_state {
- NETCONN_NONE,
- NETCONN_WRITE,
- NETCONN_LISTEN,
- NETCONN_CONNECT,
- NETCONN_CLOSE
-};
-
-/** Use to inform the callback function about changes */
-enum netconn_evt {
- NETCONN_EVT_RCVPLUS,
- NETCONN_EVT_RCVMINUS,
- NETCONN_EVT_SENDPLUS,
- NETCONN_EVT_SENDMINUS,
- NETCONN_EVT_ERROR
-};
-
-#if LWIP_IGMP
-/** Used for netconn_join_leave_group() */
-enum netconn_igmp {
- NETCONN_JOIN,
- NETCONN_LEAVE
-};
-#endif /* LWIP_IGMP */
-
-/* forward-declare some structs to avoid to include their headers */
-struct ip_pcb;
-struct tcp_pcb;
-struct udp_pcb;
-struct raw_pcb;
-struct netconn;
-struct api_msg_msg;
-
-/** A callback prototype to inform about events for a netconn */
-typedef void (* netconn_callback)(struct netconn *, enum netconn_evt, u16_t len);
-
-/** A netconn descriptor */
-struct netconn {
- /** type of the netconn (TCP, UDP or RAW) */
- enum netconn_type type;
- /** current state of the netconn */
- enum netconn_state state;
- /** the lwIP internal protocol control block */
- union {
- struct ip_pcb *ip;
- struct tcp_pcb *tcp;
- struct udp_pcb *udp;
- struct raw_pcb *raw;
- } pcb;
- /** the last error this netconn had */
- err_t last_err;
- /** sem that is used to synchroneously execute functions in the core context */
- sys_sem_t op_completed;
- /** mbox where received packets are stored until they are fetched
- by the netconn application thread (can grow quite big) */
- sys_mbox_t recvmbox;
-#if LWIP_TCP
- /** mbox where new connections are stored until processed
- by the application thread */
- sys_mbox_t acceptmbox;
-#endif /* LWIP_TCP */
- /** only used for socket layer */
-#if LWIP_SOCKET
- int socket;
-#endif /* LWIP_SOCKET */
-#if LWIP_SO_RCVTIMEO
- /** timeout to wait for new data to be received
- (or connections to arrive for listening netconns) */
- int recv_timeout;
-#endif /* LWIP_SO_RCVTIMEO */
-#if LWIP_SO_RCVBUF
- /** maximum amount of bytes queued in recvmbox
- not used for TCP: adjust TCP_WND instead! */
- int recv_bufsize;
-#endif /* LWIP_SO_RCVBUF */
- /** number of bytes currently in recvmbox to be received,
- tested against recv_bufsize to limit bytes on recvmbox
- for UDP and RAW
- @todo: should only be necessary with LWIP_SO_RCVBUF==1 */
- s16_t recv_avail;
- /** flags holding more netconn-internal state, see NETCONN_FLAG_* defines */
- u8_t flags;
-#if LWIP_TCP
- /** TCP: when data passed to netconn_write doesn't fit into the send buffer,
- this temporarily stores how much is already sent. */
- size_t write_offset;
- /** TCP: when data passed to netconn_write doesn't fit into the send buffer,
- this temporarily stores the message.
- Also used during connect and close. */
- struct api_msg_msg *current_msg;
-#endif /* LWIP_TCP */
- /** A callback function that is informed about events for this netconn */
- netconn_callback callback;
-};
-
-/** Register an Network connection event */
-#define API_EVENT(c,e,l) if (c->callback) { \
- (*c->callback)(c, e, l); \
- }
-
-/** Set conn->last_err to err but don't overwrite fatal errors */
-#define NETCONN_SET_SAFE_ERR(conn, err) do { \
- SYS_ARCH_DECL_PROTECT(lev); \
- SYS_ARCH_PROTECT(lev); \
- if (!ERR_IS_FATAL((conn)->last_err)) { \
- (conn)->last_err = err; \
- } \
- SYS_ARCH_UNPROTECT(lev); \
-} while(0);
-
-/* Network connection functions: */
-#define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL)
-#define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c)
-struct
-netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto,
- netconn_callback callback);
-err_t netconn_delete(struct netconn *conn);
-/** Get the type of a netconn (as enum netconn_type). */
-#define netconn_type(conn) (conn->type)
-
-err_t netconn_getaddr(struct netconn *conn, ip_addr_t *addr,
- u16_t *port, u8_t local);
-#define netconn_peer(c,i,p) netconn_getaddr(c,i,p,0)
-#define netconn_addr(c,i,p) netconn_getaddr(c,i,p,1)
-
-err_t netconn_bind(struct netconn *conn, ip_addr_t *addr, u16_t port);
-err_t netconn_connect(struct netconn *conn, ip_addr_t *addr, u16_t port);
-err_t netconn_disconnect (struct netconn *conn);
-err_t netconn_listen_with_backlog(struct netconn *conn, u8_t backlog);
-#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG)
-err_t netconn_accept(struct netconn *conn, struct netconn **new_conn);
-err_t netconn_recv(struct netconn *conn, struct netbuf **new_buf);
-err_t netconn_recv_tcp_pbuf(struct netconn *conn, struct pbuf **new_buf);
-void netconn_recved(struct netconn *conn, u32_t length);
-err_t netconn_sendto(struct netconn *conn, struct netbuf *buf,
- ip_addr_t *addr, u16_t port);
-err_t netconn_send(struct netconn *conn, struct netbuf *buf);
-err_t netconn_write(struct netconn *conn, const void *dataptr, size_t size,
- u8_t apiflags);
-err_t netconn_close(struct netconn *conn);
-err_t netconn_shutdown(struct netconn *conn, u8_t shut_rx, u8_t shut_tx);
-
-#if LWIP_IGMP
-err_t netconn_join_leave_group(struct netconn *conn, ip_addr_t *multiaddr,
- ip_addr_t *netif_addr, enum netconn_igmp join_or_leave);
-#endif /* LWIP_IGMP */
-#if LWIP_DNS
-err_t netconn_gethostbyname(const char *name, ip_addr_t *addr);
-#endif /* LWIP_DNS */
-
-#define netconn_err(conn) ((conn)->last_err)
-#define netconn_recv_bufsize(conn) ((conn)->recv_bufsize)
-
-/** Set the blocking status of netconn calls (@todo: write/send is missing) */
-#define netconn_set_nonblocking(conn, val) do { if(val) { \
- (conn)->flags |= NETCONN_FLAG_NON_BLOCKING; \
-} else { \
- (conn)->flags &= ~ NETCONN_FLAG_NON_BLOCKING; }} while(0)
-/** Get the blocking status of netconn calls (@todo: write/send is missing) */
-#define netconn_is_nonblocking(conn) (((conn)->flags & NETCONN_FLAG_NON_BLOCKING) != 0)
-
-/** TCP: Set the no-auto-recved status of netconn calls (see NETCONN_FLAG_NO_AUTO_RECVED) */
-#define netconn_set_noautorecved(conn, val) do { if(val) { \
- (conn)->flags |= NETCONN_FLAG_NO_AUTO_RECVED; \
-} else { \
- (conn)->flags &= ~ NETCONN_FLAG_NO_AUTO_RECVED; }} while(0)
-/** TCP: Get the no-auto-recved status of netconn calls (see NETCONN_FLAG_NO_AUTO_RECVED) */
-#define netconn_get_noautorecved(conn) (((conn)->flags & NETCONN_FLAG_NO_AUTO_RECVED) != 0)
-
-#if LWIP_SO_RCVTIMEO
-/** Set the receive timeout in milliseconds */
-#define netconn_set_recvtimeout(conn, timeout) ((conn)->recv_timeout = (timeout))
-/** Get the receive timeout in milliseconds */
-#define netconn_get_recvtimeout(conn) ((conn)->recv_timeout)
-#endif /* LWIP_SO_RCVTIMEO */
-#if LWIP_SO_RCVBUF
-/** Set the receive buffer in bytes */
-#define netconn_set_recvbufsize(conn, recvbufsize) ((conn)->recv_bufsize = (recvbufsize))
-/** Get the receive buffer in bytes */
-#define netconn_get_recvbufsize(conn) ((conn)->recv_bufsize)
-#endif /* LWIP_SO_RCVBUF*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_NETCONN */
-
-#endif /* __LWIP_API_H__ */
--- a/LPC2368/lwip/include/lwip/api_msg.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
- * 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 __LWIP_API_MSG_H__
-#define __LWIP_API_MSG_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
-
-#include <stddef.h> /* for size_t */
-
-#include "lwip/ip_addr.h"
-#include "lwip/err.h"
-#include "lwip/sys.h"
-#include "lwip/igmp.h"
-#include "lwip/api.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define NETCONN_SHUT_RD 1
-#define NETCONN_SHUT_WR 2
-#define NETCONN_SHUT_RDWR 3
-
-/* IP addresses and port numbers are expected to be in
- * the same byte order as in the corresponding pcb.
- */
-/** This struct includes everything that is necessary to execute a function
- for a netconn in another thread context (mainly used to process netconns
- in the tcpip_thread context to be thread safe). */
-struct api_msg_msg {
- /** The netconn which to process - always needed: it includes the semaphore
- which is used to block the application thread until the function finished. */
- struct netconn *conn;
- /** The return value of the function executed in tcpip_thread. */
- err_t err;
- /** Depending on the executed function, one of these union members is used */
- union {
- /** used for do_send */
- struct netbuf *b;
- /** used for do_newconn */
- struct {
- u8_t proto;
- } n;
- /** used for do_bind and do_connect */
- struct {
- ip_addr_t *ipaddr;
- u16_t port;
- } bc;
- /** used for do_getaddr */
- struct {
- ip_addr_t *ipaddr;
- u16_t *port;
- u8_t local;
- } ad;
- /** used for do_write */
- struct {
- const void *dataptr;
- size_t len;
- u8_t apiflags;
- } w;
- /** used for do_recv */
- struct {
- u32_t len;
- } r;
- /** used for do_close (/shutdown) */
- struct {
- u8_t shut;
- } sd;
-#if LWIP_IGMP
- /** used for do_join_leave_group */
- struct {
- ip_addr_t *multiaddr;
- ip_addr_t *netif_addr;
- enum netconn_igmp join_or_leave;
- } jl;
-#endif /* LWIP_IGMP */
-#if TCP_LISTEN_BACKLOG
- struct {
- u8_t backlog;
- } lb;
-#endif /* TCP_LISTEN_BACKLOG */
- } msg;
-};
-
-/** This struct contains a function to execute in another thread context and
- a struct api_msg_msg that serves as an argument for this function.
- This is passed to tcpip_apimsg to execute functions in tcpip_thread context. */
-struct api_msg {
- /** function to execute in tcpip_thread context */
- void (* function)(struct api_msg_msg *msg);
- /** arguments for this function */
- struct api_msg_msg msg;
-};
-
-#if LWIP_DNS
-/** As do_gethostbyname requires more arguments but doesn't require a netconn,
- it has its own struct (to avoid struct api_msg getting bigger than necessary).
- do_gethostbyname must be called using tcpip_callback instead of tcpip_apimsg
- (see netconn_gethostbyname). */
-struct dns_api_msg {
- /** Hostname to query or dotted IP address string */
- const char *name;
- /** Rhe resolved address is stored here */
- ip_addr_t *addr;
- /** This semaphore is posted when the name is resolved, the application thread
- should wait on it. */
- sys_sem_t *sem;
- /** Errors are given back here */
- err_t *err;
-};
-#endif /* LWIP_DNS */
-
-void do_newconn ( struct api_msg_msg *msg);
-void do_delconn ( struct api_msg_msg *msg);
-void do_bind ( struct api_msg_msg *msg);
-void do_connect ( struct api_msg_msg *msg);
-void do_disconnect ( struct api_msg_msg *msg);
-void do_listen ( struct api_msg_msg *msg);
-void do_send ( struct api_msg_msg *msg);
-void do_recv ( struct api_msg_msg *msg);
-void do_write ( struct api_msg_msg *msg);
-void do_getaddr ( struct api_msg_msg *msg);
-void do_close ( struct api_msg_msg *msg);
-void do_shutdown ( struct api_msg_msg *msg);
-#if LWIP_IGMP
-void do_join_leave_group( struct api_msg_msg *msg);
-#endif /* LWIP_IGMP */
-
-#if LWIP_DNS
-void do_gethostbyname(void *arg);
-#endif /* LWIP_DNS */
-
-struct netconn* netconn_alloc(enum netconn_type t, netconn_callback callback);
-void netconn_free(struct netconn *conn);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_NETCONN */
-
-#endif /* __LWIP_API_MSG_H__ */
--- a/LPC2368/lwip/include/lwip/arch.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/*
- * 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 __LWIP_ARCH_H__
-#define __LWIP_ARCH_H__
-
-#ifndef LITTLE_ENDIAN
-#define LITTLE_ENDIAN 1234
-#endif
-
-#ifndef BIG_ENDIAN
-#define BIG_ENDIAN 4321
-#endif
-
-#include "arch/cc.h"
-
-/** Temporary: define format string for size_t if not defined in cc.h */
-#ifndef SZT_F
-#define SZT_F U32_F
-#endif /* SZT_F */
-/** Temporary upgrade helper: define format string for u8_t as hex if not
- defined in cc.h */
-#ifndef X8_F
-#define X8_F "02x"
-#endif /* X8_F */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef PACK_STRUCT_BEGIN
-#define PACK_STRUCT_BEGIN
-#endif /* PACK_STRUCT_BEGIN */
-
-#ifndef PACK_STRUCT_END
-#define PACK_STRUCT_END
-#endif /* PACK_STRUCT_END */
-
-#ifndef PACK_STRUCT_FIELD
-#define PACK_STRUCT_FIELD(x) x
-#endif /* PACK_STRUCT_FIELD */
-
-
-#ifndef LWIP_UNUSED_ARG
-#define LWIP_UNUSED_ARG(x) (void)x
-#endif /* LWIP_UNUSED_ARG */
-
-
-#ifdef LWIP_PROVIDE_ERRNO
-
-#define EPERM 1 /* Operation not permitted */
-#define ENOENT 2 /* No such file or directory */
-#define ESRCH 3 /* No such process */
-#define EINTR 4 /* Interrupted system call */
-#define EIO 5 /* I/O error */
-#define ENXIO 6 /* No such device or address */
-#define E2BIG 7 /* Arg list too long */
-#define ENOEXEC 8 /* Exec format error */
-#define EBADF 9 /* Bad file number */
-#define ECHILD 10 /* No child processes */
-#define EAGAIN 11 /* Try again */
-#define ENOMEM 12 /* Out of memory */
-#define EACCES 13 /* Permission denied */
-#define EFAULT 14 /* Bad address */
-#define ENOTBLK 15 /* Block device required */
-#define EBUSY 16 /* Device or resource busy */
-#define EEXIST 17 /* File exists */
-#define EXDEV 18 /* Cross-device link */
-#define ENODEV 19 /* No such device */
-#define ENOTDIR 20 /* Not a directory */
-#define EISDIR 21 /* Is a directory */
-#define EINVAL 22 /* Invalid argument */
-#define ENFILE 23 /* File table overflow */
-#define EMFILE 24 /* Too many open files */
-#define ENOTTY 25 /* Not a typewriter */
-#define ETXTBSY 26 /* Text file busy */
-#define EFBIG 27 /* File too large */
-#define ENOSPC 28 /* No space left on device */
-#define ESPIPE 29 /* Illegal seek */
-#define EROFS 30 /* Read-only file system */
-#define EMLINK 31 /* Too many links */
-#define EPIPE 32 /* Broken pipe */
-#define EDOM 33 /* Math argument out of domain of func */
-#define ERANGE 34 /* Math result not representable */
-#define EDEADLK 35 /* Resource deadlock would occur */
-#define ENAMETOOLONG 36 /* File name too long */
-#define ENOLCK 37 /* No record locks available */
-#define ENOSYS 38 /* Function not implemented */
-#define ENOTEMPTY 39 /* Directory not empty */
-#define ELOOP 40 /* Too many symbolic links encountered */
-#define EWOULDBLOCK EAGAIN /* Operation would block */
-#define ENOMSG 42 /* No message of desired type */
-#define EIDRM 43 /* Identifier removed */
-#define ECHRNG 44 /* Channel number out of range */
-#define EL2NSYNC 45 /* Level 2 not synchronized */
-#define EL3HLT 46 /* Level 3 halted */
-#define EL3RST 47 /* Level 3 reset */
-#define ELNRNG 48 /* Link number out of range */
-#define EUNATCH 49 /* Protocol driver not attached */
-#define ENOCSI 50 /* No CSI structure available */
-#define EL2HLT 51 /* Level 2 halted */
-#define EBADE 52 /* Invalid exchange */
-#define EBADR 53 /* Invalid request descriptor */
-#define EXFULL 54 /* Exchange full */
-#define ENOANO 55 /* No anode */
-#define EBADRQC 56 /* Invalid request code */
-#define EBADSLT 57 /* Invalid slot */
-
-#define EDEADLOCK EDEADLK
-
-#define EBFONT 59 /* Bad font file format */
-#define ENOSTR 60 /* Device not a stream */
-#define ENODATA 61 /* No data available */
-#define ETIME 62 /* Timer expired */
-#define ENOSR 63 /* Out of streams resources */
-#define ENONET 64 /* Machine is not on the network */
-#define ENOPKG 65 /* Package not installed */
-#define EREMOTE 66 /* Object is remote */
-#define ENOLINK 67 /* Link has been severed */
-#define EADV 68 /* Advertise error */
-#define ESRMNT 69 /* Srmount error */
-#define ECOMM 70 /* Communication error on send */
-#define EPROTO 71 /* Protocol error */
-#define EMULTIHOP 72 /* Multihop attempted */
-#define EDOTDOT 73 /* RFS specific error */
-#define EBADMSG 74 /* Not a data message */
-#define EOVERFLOW 75 /* Value too large for defined data type */
-#define ENOTUNIQ 76 /* Name not unique on network */
-#define EBADFD 77 /* File descriptor in bad state */
-#define EREMCHG 78 /* Remote address changed */
-#define ELIBACC 79 /* Can not access a needed shared library */
-#define ELIBBAD 80 /* Accessing a corrupted shared library */
-#define ELIBSCN 81 /* .lib section in a.out corrupted */
-#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
-#define ELIBEXEC 83 /* Cannot exec a shared library directly */
-#define EILSEQ 84 /* Illegal byte sequence */
-#define ERESTART 85 /* Interrupted system call should be restarted */
-#define ESTRPIPE 86 /* Streams pipe error */
-#define EUSERS 87 /* Too many users */
-#define ENOTSOCK 88 /* Socket operation on non-socket */
-#define EDESTADDRREQ 89 /* Destination address required */
-#define EMSGSIZE 90 /* Message too long */
-#define EPROTOTYPE 91 /* Protocol wrong type for socket */
-#define ENOPROTOOPT 92 /* Protocol not available */
-#define EPROTONOSUPPORT 93 /* Protocol not supported */
-#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
-#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
-#define EPFNOSUPPORT 96 /* Protocol family not supported */
-#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
-#define EADDRINUSE 98 /* Address already in use */
-#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
-#define ENETDOWN 100 /* Network is down */
-#define ENETUNREACH 101 /* Network is unreachable */
-#define ENETRESET 102 /* Network dropped connection because of reset */
-#define ECONNABORTED 103 /* Software caused connection abort */
-#define ECONNRESET 104 /* Connection reset by peer */
-#define ENOBUFS 105 /* No buffer space available */
-#define EISCONN 106 /* Transport endpoint is already connected */
-#define ENOTCONN 107 /* Transport endpoint is not connected */
-#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
-#define ETOOMANYREFS 109 /* Too many references: cannot splice */
-#define ETIMEDOUT 110 /* Connection timed out */
-#define ECONNREFUSED 111 /* Connection refused */
-#define EHOSTDOWN 112 /* Host is down */
-#define EHOSTUNREACH 113 /* No route to host */
-#define EALREADY 114 /* Operation already in progress */
-#define EINPROGRESS 115 /* Operation now in progress */
-#define ESTALE 116 /* Stale NFS file handle */
-#define EUCLEAN 117 /* Structure needs cleaning */
-#define ENOTNAM 118 /* Not a XENIX named type file */
-#define ENAVAIL 119 /* No XENIX semaphores available */
-#define EISNAM 120 /* Is a named type file */
-#define EREMOTEIO 121 /* Remote I/O error */
-#define EDQUOT 122 /* Quota exceeded */
-
-#define ENOMEDIUM 123 /* No medium found */
-#define EMEDIUMTYPE 124 /* Wrong medium type */
-
-
-#define ENSROK 0 /* DNS server returned answer with no data */
-#define ENSRNODATA 160 /* DNS server returned answer with no data */
-#define ENSRFORMERR 161 /* DNS server claims query was misformatted */
-#define ENSRSERVFAIL 162 /* DNS server returned general failure */
-#define ENSRNOTFOUND 163 /* Domain name not found */
-#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */
-#define ENSRREFUSED 165 /* DNS server refused query */
-#define ENSRBADQUERY 166 /* Misformatted DNS query */
-#define ENSRBADNAME 167 /* Misformatted domain name */
-#define ENSRBADFAMILY 168 /* Unsupported address family */
-#define ENSRBADRESP 169 /* Misformatted DNS reply */
-#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */
-#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */
-#define ENSROF 172 /* End of file */
-#define ENSRFILE 173 /* Error reading file */
-#define ENSRNOMEM 174 /* Out of memory */
-#define ENSRDESTRUCTION 175 /* Application terminated lookup */
-#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */
-#define ENSRCNAMELOOP 177 /* Domain name is too long */
-
-#ifndef errno
-extern int errno;
-#endif
-
-#endif /* LWIP_PROVIDE_ERRNO */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_ARCH_H__ */
--- a/LPC2368/lwip/include/lwip/debug.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * 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 __LWIP_DEBUG_H__
-#define __LWIP_DEBUG_H__
-
-#include "lwip/arch.h"
-
-/** lower two bits indicate debug level
- * - 0 all
- * - 1 warning
- * - 2 serious
- * - 3 severe
- */
-#define LWIP_DBG_LEVEL_ALL 0x00
-#define LWIP_DBG_LEVEL_OFF LWIP_DBG_LEVEL_ALL /* compatibility define only */
-#define LWIP_DBG_LEVEL_WARNING 0x01 /* bad checksums, dropped packets, ... */
-#define LWIP_DBG_LEVEL_SERIOUS 0x02 /* memory allocation failures, ... */
-#define LWIP_DBG_LEVEL_SEVERE 0x03
-#define LWIP_DBG_MASK_LEVEL 0x03
-
-/** flag for LWIP_DEBUGF to enable that debug message */
-#define LWIP_DBG_ON 0x80U
-/** flag for LWIP_DEBUGF to disable that debug message */
-#define LWIP_DBG_OFF 0x00U
-
-/** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */
-#define LWIP_DBG_TRACE 0x40U
-/** flag for LWIP_DEBUGF indicating a state debug message (to follow module states) */
-#define LWIP_DBG_STATE 0x20U
-/** flag for LWIP_DEBUGF indicating newly added code, not thoroughly tested yet */
-#define LWIP_DBG_FRESH 0x10U
-/** flag for LWIP_DEBUGF to halt after printing this debug message */
-#define LWIP_DBG_HALT 0x08U
-
-#ifndef LWIP_NOASSERT
-#define LWIP_ASSERT(message, assertion) do { if(!(assertion)) \
- LWIP_PLATFORM_ASSERT(message); } while(0)
-#else /* LWIP_NOASSERT */
-#define LWIP_ASSERT(message, assertion)
-#endif /* LWIP_NOASSERT */
-
-/** if "expression" isn't true, then print "message" and execute "handler" expression */
-#ifndef LWIP_ERROR
-#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
- LWIP_PLATFORM_ASSERT(message); handler;}} while(0)
-#endif /* LWIP_ERROR */
-
-#ifdef LWIP_DEBUG
-/** print debug message only if debug message type is enabled...
- * AND is of correct type AND is at least LWIP_DBG_LEVEL
- */
-#define LWIP_DEBUGF(debug, message) do { \
- if ( \
- ((debug) & LWIP_DBG_ON) && \
- ((debug) & LWIP_DBG_TYPES_ON) && \
- ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
- LWIP_PLATFORM_DIAG(message); \
- if ((debug) & LWIP_DBG_HALT) { \
- while(1); \
- } \
- } \
- } while(0)
-
-#else /* LWIP_DEBUG */
-#define LWIP_DEBUGF(debug, message)
-#endif /* LWIP_DEBUG */
-
-#endif /* __LWIP_DEBUG_H__ */
-
--- a/LPC2368/lwip/include/lwip/def.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * 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 __LWIP_DEF_H__
-#define __LWIP_DEF_H__
-
-/* arch.h might define NULL already */
-#include "lwip/arch.h"
-#include "lwip/opt.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define LWIP_MAX(x , y) (((x) > (y)) ? (x) : (y))
-#define LWIP_MIN(x , y) (((x) < (y)) ? (x) : (y))
-
-#ifndef NULL
-#define NULL ((void *)0)
-#endif
-
-/** Get the absolute difference between 2 u32_t values (correcting overflows)
- * 'a' is expected to be 'higher' (without overflow) than 'b'. */
-#define LWIP_U32_DIFF(a, b) (((a) >= (b)) ? ((a) - (b)) : (((a) + ((b) ^ 0xFFFFFFFF) + 1)))
-
-/* Endianess-optimized shifting of two u8_t to create one u16_t */
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define LWIP_MAKE_U16(a, b) ((a << 8) | b)
-#else
-#define LWIP_MAKE_U16(a, b) ((b << 8) | a)
-#endif
-
-#ifndef LWIP_PLATFORM_BYTESWAP
-#define LWIP_PLATFORM_BYTESWAP 0
-#endif
-
-#ifndef LWIP_PREFIX_BYTEORDER_FUNCS
-/* workaround for naming collisions on some platforms */
-
-#ifdef htons
-#undef htons
-#endif /* htons */
-#ifdef htonl
-#undef htonl
-#endif /* htonl */
-#ifdef ntohs
-#undef ntohs
-#endif /* ntohs */
-#ifdef ntohl
-#undef ntohl
-#endif /* ntohl */
-
-#define htons(x) lwip_htons(x)
-#define ntohs(x) lwip_ntohs(x)
-#define htonl(x) lwip_htonl(x)
-#define ntohl(x) lwip_ntohl(x)
-#endif /* LWIP_PREFIX_BYTEORDER_FUNCS */
-
-#if BYTE_ORDER == BIG_ENDIAN
-#define lwip_htons(x) (x)
-#define lwip_ntohs(x) (x)
-#define lwip_htonl(x) (x)
-#define lwip_ntohl(x) (x)
-#define PP_HTONS(x) (x)
-#define PP_NTOHS(x) (x)
-#define PP_HTONL(x) (x)
-#define PP_NTOHL(x) (x)
-#else /* BYTE_ORDER != BIG_ENDIAN */
-#if LWIP_PLATFORM_BYTESWAP
-#define lwip_htons(x) LWIP_PLATFORM_HTONS(x)
-#define lwip_ntohs(x) LWIP_PLATFORM_HTONS(x)
-#define lwip_htonl(x) LWIP_PLATFORM_HTONL(x)
-#define lwip_ntohl(x) LWIP_PLATFORM_HTONL(x)
-#else /* LWIP_PLATFORM_BYTESWAP */
-u16_t lwip_htons(u16_t x);
-u16_t lwip_ntohs(u16_t x);
-u32_t lwip_htonl(u32_t x);
-u32_t lwip_ntohl(u32_t x);
-#endif /* LWIP_PLATFORM_BYTESWAP */
-
-/* These macros should be calculated by the preprocessor and are used
- with compile-time constants only (so that there is no little-endian
- overhead at runtime). */
-#define PP_HTONS(x) ((((x) & 0xff) << 8) | (((x) & 0xff00) >> 8))
-#define PP_NTOHS(x) PP_HTONS(x)
-#define PP_HTONL(x) ((((x) & 0xff) << 24) | \
- (((x) & 0xff00) << 8) | \
- (((x) & 0xff0000UL) >> 8) | \
- (((x) & 0xff000000UL) >> 24))
-#define PP_NTOHL(x) PP_HTONL(x)
-
-#endif /* BYTE_ORDER == BIG_ENDIAN */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_DEF_H__ */
-
--- a/LPC2368/lwip/include/lwip/dhcp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-/** @file
- */
-
-#ifndef __LWIP_DHCP_H__
-#define __LWIP_DHCP_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/netif.h"
-#include "lwip/udp.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** period (in seconds) of the application calling dhcp_coarse_tmr() */
-#define DHCP_COARSE_TIMER_SECS 60
-/** period (in milliseconds) of the application calling dhcp_coarse_tmr() */
-#define DHCP_COARSE_TIMER_MSECS (DHCP_COARSE_TIMER_SECS * 1000UL)
-/** period (in milliseconds) of the application calling dhcp_fine_tmr() */
-#define DHCP_FINE_TIMER_MSECS 500
-
-#define DHCP_CHADDR_LEN 16U
-#define DHCP_SNAME_LEN 64U
-#define DHCP_FILE_LEN 128U
-
-struct dhcp
-{
- /** transaction identifier of last sent request */
- u32_t xid;
- /** our connection to the DHCP server */
- struct udp_pcb *pcb;
- /** incoming msg */
- struct dhcp_msg *msg_in;
- /** current DHCP state machine state */
- u8_t state;
- /** retries of current request */
- u8_t tries;
-#if LWIP_DHCP_AUTOIP_COOP
- u8_t autoip_coop_state;
-#endif
- u8_t subnet_mask_given;
-
- struct pbuf *p_out; /* pbuf of outcoming msg */
- struct dhcp_msg *msg_out; /* outgoing msg */
- u16_t options_out_len; /* outgoing msg options length */
- u16_t request_timeout; /* #ticks with period DHCP_FINE_TIMER_SECS for request timeout */
- u16_t t1_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for renewal time */
- u16_t t2_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for rebind time */
- ip_addr_t server_ip_addr; /* dhcp server address that offered this lease */
- ip_addr_t offered_ip_addr;
- ip_addr_t offered_sn_mask;
- ip_addr_t offered_gw_addr;
-
- u32_t offered_t0_lease; /* lease period (in seconds) */
- u32_t offered_t1_renew; /* recommended renew time (usually 50% of lease period) */
- u32_t offered_t2_rebind; /* recommended rebind time (usually 66% of lease period) */
- /* @todo: LWIP_DHCP_BOOTP_FILE configuration option?
- integrate with possible TFTP-client for booting? */
-#if LWIP_DHCP_BOOTP_FILE
- ip_addr_t offered_si_addr;
- char boot_file_name[DHCP_FILE_LEN];
-#endif /* LWIP_DHCP_BOOTPFILE */
-};
-
-/* MUST be compiled with "pack structs" or equivalent! */
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-/** minimum set of fields of any DHCP message */
-struct dhcp_msg
-{
- PACK_STRUCT_FIELD(u8_t op);
- PACK_STRUCT_FIELD(u8_t htype);
- PACK_STRUCT_FIELD(u8_t hlen);
- PACK_STRUCT_FIELD(u8_t hops);
- PACK_STRUCT_FIELD(u32_t xid);
- PACK_STRUCT_FIELD(u16_t secs);
- PACK_STRUCT_FIELD(u16_t flags);
- PACK_STRUCT_FIELD(ip_addr_p_t ciaddr);
- PACK_STRUCT_FIELD(ip_addr_p_t yiaddr);
- PACK_STRUCT_FIELD(ip_addr_p_t siaddr);
- PACK_STRUCT_FIELD(ip_addr_p_t giaddr);
- PACK_STRUCT_FIELD(u8_t chaddr[DHCP_CHADDR_LEN]);
- PACK_STRUCT_FIELD(u8_t sname[DHCP_SNAME_LEN]);
- PACK_STRUCT_FIELD(u8_t file[DHCP_FILE_LEN]);
- PACK_STRUCT_FIELD(u32_t cookie);
-#define DHCP_MIN_OPTIONS_LEN 68U
-/** make sure user does not configure this too small */
-#if ((defined(DHCP_OPTIONS_LEN)) && (DHCP_OPTIONS_LEN < DHCP_MIN_OPTIONS_LEN))
-# undef DHCP_OPTIONS_LEN
-#endif
-/** allow this to be configured in lwipopts.h, but not too small */
-#if (!defined(DHCP_OPTIONS_LEN))
-/** set this to be sufficient for your options in outgoing DHCP msgs */
-# define DHCP_OPTIONS_LEN DHCP_MIN_OPTIONS_LEN
-#endif
- PACK_STRUCT_FIELD(u8_t options[DHCP_OPTIONS_LEN]);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-void dhcp_set_struct(struct netif *netif, struct dhcp *dhcp);
-/** start DHCP configuration */
-err_t dhcp_start(struct netif *netif);
-/** enforce early lease renewal (not needed normally)*/
-err_t dhcp_renew(struct netif *netif);
-/** release the DHCP lease, usually called before dhcp_stop()*/
-err_t dhcp_release(struct netif *netif);
-/** stop DHCP configuration */
-void dhcp_stop(struct netif *netif);
-/** inform server of our manual IP address */
-void dhcp_inform(struct netif *netif);
-/** Handle a possible change in the network configuration */
-void dhcp_network_changed(struct netif *netif);
-
-/** if enabled, check whether the offered IP address is not in use, using ARP */
-#if DHCP_DOES_ARP_CHECK
-void dhcp_arp_reply(struct netif *netif, ip_addr_t *addr);
-#endif
-
-/** to be called every minute */
-void dhcp_coarse_tmr(void);
-/** to be called every half second */
-void dhcp_fine_tmr(void);
-
-/** DHCP message item offsets and length */
-#define DHCP_OP_OFS 0
-#define DHCP_HTYPE_OFS 1
-#define DHCP_HLEN_OFS 2
-#define DHCP_HOPS_OFS 3
-#define DHCP_XID_OFS 4
-#define DHCP_SECS_OFS 8
-#define DHCP_FLAGS_OFS 10
-#define DHCP_CIADDR_OFS 12
-#define DHCP_YIADDR_OFS 16
-#define DHCP_SIADDR_OFS 20
-#define DHCP_GIADDR_OFS 24
-#define DHCP_CHADDR_OFS 28
-#define DHCP_SNAME_OFS 44
-#define DHCP_FILE_OFS 108
-#define DHCP_MSG_LEN 236
-
-#define DHCP_COOKIE_OFS DHCP_MSG_LEN
-#define DHCP_OPTIONS_OFS (DHCP_MSG_LEN + 4)
-
-#define DHCP_CLIENT_PORT 68
-#define DHCP_SERVER_PORT 67
-
-/** DHCP client states */
-#define DHCP_OFF 0
-#define DHCP_REQUESTING 1
-#define DHCP_INIT 2
-#define DHCP_REBOOTING 3
-#define DHCP_REBINDING 4
-#define DHCP_RENEWING 5
-#define DHCP_SELECTING 6
-#define DHCP_INFORMING 7
-#define DHCP_CHECKING 8
-#define DHCP_PERMANENT 9
-#define DHCP_BOUND 10
-/** not yet implemented #define DHCP_RELEASING 11 */
-#define DHCP_BACKING_OFF 12
-
-/** AUTOIP cooperatation flags */
-#define DHCP_AUTOIP_COOP_STATE_OFF 0
-#define DHCP_AUTOIP_COOP_STATE_ON 1
-
-#define DHCP_BOOTREQUEST 1
-#define DHCP_BOOTREPLY 2
-
-/** DHCP message types */
-#define DHCP_DISCOVER 1
-#define DHCP_OFFER 2
-#define DHCP_REQUEST 3
-#define DHCP_DECLINE 4
-#define DHCP_ACK 5
-#define DHCP_NAK 6
-#define DHCP_RELEASE 7
-#define DHCP_INFORM 8
-
-/** DHCP hardware type, currently only ethernet is supported */
-#define DHCP_HTYPE_ETH 1
-
-#define DHCP_MAGIC_COOKIE 0x63825363UL
-
-/* This is a list of options for BOOTP and DHCP, see RFC 2132 for descriptions */
-
-/** BootP options */
-#define DHCP_OPTION_PAD 0
-#define DHCP_OPTION_SUBNET_MASK 1 /* RFC 2132 3.3 */
-#define DHCP_OPTION_ROUTER 3
-#define DHCP_OPTION_DNS_SERVER 6
-#define DHCP_OPTION_HOSTNAME 12
-#define DHCP_OPTION_IP_TTL 23
-#define DHCP_OPTION_MTU 26
-#define DHCP_OPTION_BROADCAST 28
-#define DHCP_OPTION_TCP_TTL 37
-#define DHCP_OPTION_END 255
-
-/** DHCP options */
-#define DHCP_OPTION_REQUESTED_IP 50 /* RFC 2132 9.1, requested IP address */
-#define DHCP_OPTION_LEASE_TIME 51 /* RFC 2132 9.2, time in seconds, in 4 bytes */
-#define DHCP_OPTION_OVERLOAD 52 /* RFC2132 9.3, use file and/or sname field for options */
-
-#define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */
-#define DHCP_OPTION_MESSAGE_TYPE_LEN 1
-
-#define DHCP_OPTION_SERVER_ID 54 /* RFC 2132 9.7, server IP address */
-#define DHCP_OPTION_PARAMETER_REQUEST_LIST 55 /* RFC 2132 9.8, requested option types */
-
-#define DHCP_OPTION_MAX_MSG_SIZE 57 /* RFC 2132 9.10, message size accepted >= 576 */
-#define DHCP_OPTION_MAX_MSG_SIZE_LEN 2
-
-#define DHCP_OPTION_T1 58 /* T1 renewal time */
-#define DHCP_OPTION_T2 59 /* T2 rebinding time */
-#define DHCP_OPTION_US 60
-#define DHCP_OPTION_CLIENT_ID 61
-#define DHCP_OPTION_TFTP_SERVERNAME 66
-#define DHCP_OPTION_BOOTFILE 67
-
-/** possible combinations of overloading the file and sname fields with options */
-#define DHCP_OVERLOAD_NONE 0
-#define DHCP_OVERLOAD_FILE 1
-#define DHCP_OVERLOAD_SNAME 2
-#define DHCP_OVERLOAD_SNAME_FILE 3
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_DHCP */
-
-#endif /*__LWIP_DHCP_H__*/
--- a/LPC2368/lwip/include/lwip/dns.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/**
- * lwip DNS resolver header file.
-
- * Author: Jim Pettinato
- * April 2007
-
- * ported from uIP resolv.c Copyright (c) 2002-2003, Adam Dunkels.
- *
- * 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.
- */
-
-#ifndef __LWIP_DNS_H__
-#define __LWIP_DNS_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */
-
-/** DNS timer period */
-#define DNS_TMR_INTERVAL 1000
-
-/** DNS field TYPE used for "Resource Records" */
-#define DNS_RRTYPE_A 1 /* a host address */
-#define DNS_RRTYPE_NS 2 /* an authoritative name server */
-#define DNS_RRTYPE_MD 3 /* a mail destination (Obsolete - use MX) */
-#define DNS_RRTYPE_MF 4 /* a mail forwarder (Obsolete - use MX) */
-#define DNS_RRTYPE_CNAME 5 /* the canonical name for an alias */
-#define DNS_RRTYPE_SOA 6 /* marks the start of a zone of authority */
-#define DNS_RRTYPE_MB 7 /* a mailbox domain name (EXPERIMENTAL) */
-#define DNS_RRTYPE_MG 8 /* a mail group member (EXPERIMENTAL) */
-#define DNS_RRTYPE_MR 9 /* a mail rename domain name (EXPERIMENTAL) */
-#define DNS_RRTYPE_NULL 10 /* a null RR (EXPERIMENTAL) */
-#define DNS_RRTYPE_WKS 11 /* a well known service description */
-#define DNS_RRTYPE_PTR 12 /* a domain name pointer */
-#define DNS_RRTYPE_HINFO 13 /* host information */
-#define DNS_RRTYPE_MINFO 14 /* mailbox or mail list information */
-#define DNS_RRTYPE_MX 15 /* mail exchange */
-#define DNS_RRTYPE_TXT 16 /* text strings */
-
-/** DNS field CLASS used for "Resource Records" */
-#define DNS_RRCLASS_IN 1 /* the Internet */
-#define DNS_RRCLASS_CS 2 /* the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */
-#define DNS_RRCLASS_CH 3 /* the CHAOS class */
-#define DNS_RRCLASS_HS 4 /* Hesiod [Dyer 87] */
-#define DNS_RRCLASS_FLUSH 0x800 /* Flush bit */
-
-/* The size used for the next line is rather a hack, but it prevents including socket.h in all files
- that include memp.h, and that would possibly break portability (since socket.h defines some types
- and constants possibly already define by the OS).
- Calculation rule:
- sizeof(struct addrinfo) + sizeof(struct sockaddr_in) + DNS_MAX_NAME_LENGTH + 1 byte zero-termination */
-#define NETDB_ELEM_SIZE (32 + 16 + DNS_MAX_NAME_LENGTH + 1)
-
-#if DNS_LOCAL_HOSTLIST
-/** struct used for local host-list */
-struct local_hostlist_entry {
- /** static hostname */
- const char *name;
- /** static host address in network byteorder */
- ip_addr_t addr;
- struct local_hostlist_entry *next;
-};
-#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
-#ifndef DNS_LOCAL_HOSTLIST_MAX_NAMELEN
-#define DNS_LOCAL_HOSTLIST_MAX_NAMELEN DNS_MAX_NAME_LENGTH
-#endif
-#define LOCALHOSTLIST_ELEM_SIZE ((sizeof(struct local_hostlist_entry) + DNS_LOCAL_HOSTLIST_MAX_NAMELEN + 1))
-#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
-#endif /* DNS_LOCAL_HOSTLIST */
-
-/** Callback which is invoked when a hostname is found.
- * A function of this type must be implemented by the application using the DNS resolver.
- * @param name pointer to the name that was looked up.
- * @param ipaddr pointer to an ip_addr_t containing the IP address of the hostname,
- * or NULL if the name could not be found (or on any other error).
- * @param callback_arg a user-specified callback argument passed to dns_gethostbyname
-*/
-typedef void (*dns_found_callback)(const char *name, ip_addr_t *ipaddr, void *callback_arg);
-
-void dns_init(void);
-void dns_tmr(void);
-void dns_setserver(u8_t numdns, ip_addr_t *dnsserver);
-ip_addr_t dns_getserver(u8_t numdns);
-err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr,
- dns_found_callback found, void *callback_arg);
-
-#if DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC
-int dns_local_removehost(const char *hostname, const ip_addr_t *addr);
-err_t dns_local_addhost(const char *hostname, const ip_addr_t *addr);
-#endif /* DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
-
-#endif /* LWIP_DNS */
-
-#endif /* __LWIP_DNS_H__ */
--- a/LPC2368/lwip/include/lwip/err.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * 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 __LWIP_ERR_H__
-#define __LWIP_ERR_H__
-
-#include "lwip/opt.h"
-#include "lwip/arch.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Define LWIP_ERR_T in cc.h if you want to use
- * a different type for your platform (must be signed). */
-#ifdef LWIP_ERR_T
-typedef LWIP_ERR_T err_t;
-#else /* LWIP_ERR_T */
-typedef s8_t err_t;
-#endif /* LWIP_ERR_T*/
-
-/* Definitions for error constants. */
-
-#define ERR_OK 0 /* No error, everything OK. */
-#define ERR_MEM -1 /* Out of memory error. */
-#define ERR_BUF -2 /* Buffer error. */
-#define ERR_TIMEOUT -3 /* Timeout. */
-#define ERR_RTE -4 /* Routing problem. */
-#define ERR_INPROGRESS -5 /* Operation in progress */
-#define ERR_VAL -6 /* Illegal value. */
-#define ERR_WOULDBLOCK -7 /* Operation would block. */
-
-#define ERR_IS_FATAL(e) ((e) < ERR_VAL)
-
-#define ERR_ABRT -8 /* Connection aborted. */
-#define ERR_RST -9 /* Connection reset. */
-#define ERR_CLSD -10 /* Connection closed. */
-#define ERR_CONN -11 /* Not connected. */
-
-#define ERR_ARG -12 /* Illegal argument. */
-
-#define ERR_USE -13 /* Address in use. */
-
-#define ERR_IF -14 /* Low-level netif error */
-#define ERR_ISCONN -15 /* Already connected. */
-
-
-#ifdef LWIP_DEBUG
-extern const char *lwip_strerr(err_t err);
-#else
-#define lwip_strerr(x) ""
-#endif /* LWIP_DEBUG */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_ERR_H__ */
--- a/LPC2368/lwip/include/lwip/init.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * 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 __LWIP_INIT_H__
-#define __LWIP_INIT_H__
-
-#include "lwip/opt.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** X.x.x: Major version of the stack */
-#define LWIP_VERSION_MAJOR 1U
-/** x.X.x: Minor version of the stack */
-#define LWIP_VERSION_MINOR 4U
-/** x.x.X: Revision of the stack */
-#define LWIP_VERSION_REVISION 0U
-/** For release candidates, this is set to 1..254
- * For official releases, this is set to 255 (LWIP_RC_RELEASE)
- * For development versions (CVS), this is set to 0 (LWIP_RC_DEVELOPMENT) */
-#define LWIP_VERSION_RC 1U
-
-/** LWIP_VERSION_RC is set to LWIP_RC_RELEASE for official releases */
-#define LWIP_RC_RELEASE 255U
-/** LWIP_VERSION_RC is set to LWIP_RC_DEVELOPMENT for CVS versions */
-#define LWIP_RC_DEVELOPMENT 0U
-
-#define LWIP_VERSION_IS_RELEASE (LWIP_VERSION_RC == LWIP_RC_RELEASE)
-#define LWIP_VERSION_IS_DEVELOPMENT (LWIP_VERSION_RC == LWIP_RC_DEVELOPMENT)
-#define LWIP_VERSION_IS_RC ((LWIP_VERSION_RC != LWIP_RC_RELEASE) && (LWIP_VERSION_RC != LWIP_RC_DEVELOPMENT))
-
-/** Provides the version of the stack */
-#define LWIP_VERSION (LWIP_VERSION_MAJOR << 24 | LWIP_VERSION_MINOR << 16 | \
- LWIP_VERSION_REVISION << 8 | LWIP_VERSION_RC)
-
-/* Modules initialization */
-void lwip_init(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_INIT_H__ */
--- a/LPC2368/lwip/include/lwip/mem.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
- * 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 __LWIP_MEM_H__
-#define __LWIP_MEM_H__
-
-#include "lwip/opt.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if MEM_LIBC_MALLOC
-
-#include <stddef.h> /* for size_t */
-
-typedef size_t mem_size_t;
-
-/* aliases for C library malloc() */
-#define mem_init()
-/* in case C library malloc() needs extra protection,
- * allow these defines to be overridden.
- */
-#ifndef mem_free
-#define mem_free free
-#endif
-#ifndef mem_malloc
-#define mem_malloc malloc
-#endif
-#ifndef mem_calloc
-#define mem_calloc calloc
-#endif
-/* Since there is no C library allocation function to shrink memory without
- moving it, define this to nothing. */
-#ifndef mem_trim
-#define mem_trim(mem, size) (mem)
-#endif
-#else /* MEM_LIBC_MALLOC */
-
-/* MEM_SIZE would have to be aligned, but using 64000 here instead of
- * 65535 leaves some room for alignment...
- */
-#if MEM_SIZE > 64000l
-typedef u32_t mem_size_t;
-#define MEM_SIZE_F U32_F
-#else
-typedef u16_t mem_size_t;
-#define MEM_SIZE_F U16_F
-#endif /* MEM_SIZE > 64000 */
-
-#if MEM_USE_POOLS
-/** mem_init is not used when using pools instead of a heap */
-#define mem_init()
-/** mem_trim is not used when using pools instead of a heap:
- we can't free part of a pool element and don't want to copy the rest */
-#define mem_trim(mem, size) (mem)
-#else /* MEM_USE_POOLS */
-/* lwIP alternative malloc */
-void mem_init(void);
-void *mem_trim(void *mem, mem_size_t size);
-#endif /* MEM_USE_POOLS */
-void *mem_malloc(mem_size_t size);
-void *mem_calloc(mem_size_t count, mem_size_t size);
-void mem_free(void *mem);
-#endif /* MEM_LIBC_MALLOC */
-
-/** Calculate memory size for an aligned buffer - returns the next highest
- * multiple of MEM_ALIGNMENT (e.g. LWIP_MEM_ALIGN_SIZE(3) and
- * LWIP_MEM_ALIGN_SIZE(4) will both yield 4 for MEM_ALIGNMENT == 4).
- */
-#ifndef LWIP_MEM_ALIGN_SIZE
-#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
-#endif
-
-/** Calculate safe memory size for an aligned buffer when using an unaligned
- * type as storage. This includes a safety-margin on (MEM_ALIGNMENT - 1) at the
- * start (e.g. if buffer is u8_t[] and actual data will be u32_t*)
- */
-#ifndef LWIP_MEM_ALIGN_BUFFER
-#define LWIP_MEM_ALIGN_BUFFER(size) (((size) + MEM_ALIGNMENT - 1))
-#endif
-
-/** Align a memory pointer to the alignment defined by MEM_ALIGNMENT
- * so that ADDR % MEM_ALIGNMENT == 0
- */
-#ifndef LWIP_MEM_ALIGN
-#define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1)))
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_MEM_H__ */
--- a/LPC2368/lwip/include/lwip/memp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * 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 __LWIP_MEMP_H__
-#define __LWIP_MEMP_H__
-
-#include "lwip/opt.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Create the list of all memory pools managed by memp. MEMP_MAX represents a NULL pool at the end */
-typedef enum {
-#define LWIP_MEMPOOL(name,num,size,desc) MEMP_##name,
-#include "lwip/memp_std.h"
- MEMP_MAX
-} memp_t;
-
-#if MEM_USE_POOLS
-/* Use a helper type to get the start and end of the user "memory pools" for mem_malloc */
-typedef enum {
- /* Get the first (via:
- MEMP_POOL_HELPER_START = ((u8_t) 1*MEMP_POOL_A + 0*MEMP_POOL_B + 0*MEMP_POOL_C + 0)*/
- MEMP_POOL_HELPER_FIRST = ((u8_t)
-#define LWIP_MEMPOOL(name,num,size,desc)
-#define LWIP_MALLOC_MEMPOOL_START 1
-#define LWIP_MALLOC_MEMPOOL(num, size) * MEMP_POOL_##size + 0
-#define LWIP_MALLOC_MEMPOOL_END
-#include "lwip/memp_std.h"
- ) ,
- /* Get the last (via:
- MEMP_POOL_HELPER_END = ((u8_t) 0 + MEMP_POOL_A*0 + MEMP_POOL_B*0 + MEMP_POOL_C*1) */
- MEMP_POOL_HELPER_LAST = ((u8_t)
-#define LWIP_MEMPOOL(name,num,size,desc)
-#define LWIP_MALLOC_MEMPOOL_START
-#define LWIP_MALLOC_MEMPOOL(num, size) 0 + MEMP_POOL_##size *
-#define LWIP_MALLOC_MEMPOOL_END 1
-#include "lwip/memp_std.h"
- )
-} memp_pool_helper_t;
-
-/* The actual start and stop values are here (cast them over)
- We use this helper type and these defines so we can avoid using const memp_t values */
-#define MEMP_POOL_FIRST ((memp_t) MEMP_POOL_HELPER_FIRST)
-#define MEMP_POOL_LAST ((memp_t) MEMP_POOL_HELPER_LAST)
-#endif /* MEM_USE_POOLS */
-
-#if MEMP_MEM_MALLOC || MEM_USE_POOLS
-extern const u16_t memp_sizes[MEMP_MAX];
-#endif /* MEMP_MEM_MALLOC || MEM_USE_POOLS */
-
-#if MEMP_MEM_MALLOC
-
-#include "mem.h"
-
-#define memp_init()
-#define memp_malloc(type) mem_malloc(memp_sizes[type])
-#define memp_free(type, mem) mem_free(mem)
-
-#else /* MEMP_MEM_MALLOC */
-
-#if MEM_USE_POOLS
-/** This structure is used to save the pool one element came from. */
-struct memp_malloc_helper
-{
- memp_t poolnr;
-};
-#endif /* MEM_USE_POOLS */
-
-void memp_init(void);
-
-#if MEMP_OVERFLOW_CHECK
-void *memp_malloc_fn(memp_t type, const char* file, const int line);
-#define memp_malloc(t) memp_malloc_fn((t), __FILE__, __LINE__)
-#else
-void *memp_malloc(memp_t type);
-#endif
-void memp_free(memp_t type, void *mem);
-
-#endif /* MEMP_MEM_MALLOC */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_MEMP_H__ */
--- a/LPC2368/lwip/include/lwip/memp_std.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* - * SETUP: Make sure we define everything we will need. - * - * We have create three types of pools: - * 1) MEMPOOL - standard pools - * 2) MALLOC_MEMPOOL - to be used by mem_malloc in mem.c - * 3) PBUF_MEMPOOL - a mempool of pbuf's, so include space for the pbuf struct - * - * If the include'r doesn't require any special treatment of each of the types - * above, then will declare #2 & #3 to be just standard mempools. - */ -#ifndef LWIP_MALLOC_MEMPOOL -/* This treats "malloc pools" just like any other pool. - The pools are a little bigger to provide 'size' as the amount of user data. */ -#define LWIP_MALLOC_MEMPOOL(num, size) LWIP_MEMPOOL(POOL_##size, num, (size + sizeof(struct memp_malloc_helper)), "MALLOC_"#size) -#define LWIP_MALLOC_MEMPOOL_START -#define LWIP_MALLOC_MEMPOOL_END -#endif /* LWIP_MALLOC_MEMPOOL */ - -#ifndef LWIP_PBUF_MEMPOOL -/* This treats "pbuf pools" just like any other pool. - * Allocates buffers for a pbuf struct AND a payload size */ -#define LWIP_PBUF_MEMPOOL(name, num, payload, desc) LWIP_MEMPOOL(name, num, (MEMP_ALIGN_SIZE(sizeof(struct pbuf)) + MEMP_ALIGN_SIZE(payload)), desc) -#endif /* LWIP_PBUF_MEMPOOL */ - - -/* - * A list of internal pools used by LWIP. - * - * LWIP_MEMPOOL(pool_name, number_elements, element_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - */ -#if LWIP_RAW -LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB") -#endif /* LWIP_RAW */ - -#if LWIP_UDP -LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB") -#endif /* LWIP_UDP */ - -#if LWIP_TCP -LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB") -LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN") -LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG") -#endif /* LWIP_TCP */ - -#if IP_REASSEMBLY -LWIP_MEMPOOL(REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip_reassdata), "REASSDATA") -#endif /* IP_REASSEMBLY */ -#if IP_FRAG && !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF -LWIP_MEMPOOL(FRAG_PBUF, MEMP_NUM_FRAG_PBUF, sizeof(struct pbuf_custom_ref),"FRAG_PBUF") -#endif /* IP_FRAG && !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF */ - -#if LWIP_NETCONN -LWIP_MEMPOOL(NETBUF, MEMP_NUM_NETBUF, sizeof(struct netbuf), "NETBUF") -LWIP_MEMPOOL(NETCONN, MEMP_NUM_NETCONN, sizeof(struct netconn), "NETCONN") -#endif /* LWIP_NETCONN */ - -#if NO_SYS==0 -LWIP_MEMPOOL(TCPIP_MSG_API, MEMP_NUM_TCPIP_MSG_API, sizeof(struct tcpip_msg), "TCPIP_MSG_API") -#if !LWIP_TCPIP_CORE_LOCKING_INPUT -LWIP_MEMPOOL(TCPIP_MSG_INPKT,MEMP_NUM_TCPIP_MSG_INPKT, sizeof(struct tcpip_msg), "TCPIP_MSG_INPKT") -#endif /* !LWIP_TCPIP_CORE_LOCKING_INPUT */ -#endif /* NO_SYS==0 */ - -#if ARP_QUEUEING -LWIP_MEMPOOL(ARP_QUEUE, MEMP_NUM_ARP_QUEUE, sizeof(struct etharp_q_entry), "ARP_QUEUE") -#endif /* ARP_QUEUEING */ - -#if LWIP_IGMP -LWIP_MEMPOOL(IGMP_GROUP, MEMP_NUM_IGMP_GROUP, sizeof(struct igmp_group), "IGMP_GROUP") -#endif /* LWIP_IGMP */ - -#if (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS)) /* LWIP_TIMERS */ -LWIP_MEMPOOL(SYS_TIMEOUT, MEMP_NUM_SYS_TIMEOUT, sizeof(struct sys_timeo), "SYS_TIMEOUT") -#endif /* LWIP_TIMERS */ - -#if LWIP_SNMP -LWIP_MEMPOOL(SNMP_ROOTNODE, MEMP_NUM_SNMP_ROOTNODE, sizeof(struct mib_list_rootnode), "SNMP_ROOTNODE") -LWIP_MEMPOOL(SNMP_NODE, MEMP_NUM_SNMP_NODE, sizeof(struct mib_list_node), "SNMP_NODE") -LWIP_MEMPOOL(SNMP_VARBIND, MEMP_NUM_SNMP_VARBIND, sizeof(struct snmp_varbind), "SNMP_VARBIND") -LWIP_MEMPOOL(SNMP_VALUE, MEMP_NUM_SNMP_VALUE, SNMP_MAX_VALUE_SIZE, "SNMP_VALUE") -#endif /* LWIP_SNMP */ -#if LWIP_DNS && LWIP_SOCKET -LWIP_MEMPOOL(NETDB, MEMP_NUM_NETDB, NETDB_ELEM_SIZE, "NETDB") -#endif /* LWIP_DNS && LWIP_SOCKET */ -#if LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC -LWIP_MEMPOOL(LOCALHOSTLIST, MEMP_NUM_LOCALHOSTLIST, LOCALHOSTLIST_ELEM_SIZE, "LOCALHOSTLIST") -#endif /* LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ -#if PPP_SUPPORT && PPPOE_SUPPORT -LWIP_MEMPOOL(PPPOE_IF, MEMP_NUM_PPPOE_INTERFACES, sizeof(struct pppoe_softc), "PPPOE_IF") -#endif /* PPP_SUPPORT && PPPOE_SUPPORT */ - -/* - * A list of pools of pbuf's used by LWIP. - * - * LWIP_PBUF_MEMPOOL(pool_name, number_elements, pbuf_payload_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - * This allocates enough space for the pbuf struct and a payload. - * (Example: pbuf_payload_size=0 allocates only size for the struct) - */ -LWIP_PBUF_MEMPOOL(PBUF, MEMP_NUM_PBUF, 0, "PBUF_REF/ROM") -LWIP_PBUF_MEMPOOL(PBUF_POOL, PBUF_POOL_SIZE, PBUF_POOL_BUFSIZE, "PBUF_POOL") - - -/* - * Allow for user-defined pools; this must be explicitly set in lwipopts.h - * since the default is to NOT look for lwippools.h - */ -#if MEMP_USE_CUSTOM_POOLS -#include "lwippools.h" -#endif /* MEMP_USE_CUSTOM_POOLS */ - -/* - * REQUIRED CLEANUP: Clear up so we don't get "multiply defined" error later - * (#undef is ignored for something that is not defined) - */ -#undef LWIP_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL_START -#undef LWIP_MALLOC_MEMPOOL_END -#undef LWIP_PBUF_MEMPOOL
--- a/LPC2368/lwip/include/lwip/netbuf.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * 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 __LWIP_NETBUF_H__
-#define __LWIP_NETBUF_H__
-
-#include "lwip/opt.h"
-#include "lwip/pbuf.h"
-#include "lwip/ip_addr.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** This netbuf has dest-addr/port set */
-#define NETBUF_FLAG_DESTADDR 0x01
-/** This netbuf includes a checksum */
-#define NETBUF_FLAG_CHKSUM 0x02
-
-struct netbuf {
- struct pbuf *p, *ptr;
- ip_addr_t addr;
- u16_t port;
-#if LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY
-#if LWIP_CHECKSUM_ON_COPY
- u8_t flags;
-#endif /* LWIP_CHECKSUM_ON_COPY */
- u16_t toport_chksum;
-#if LWIP_NETBUF_RECVINFO
- ip_addr_t toaddr;
-#endif /* LWIP_NETBUF_RECVINFO */
-#endif /* LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY */
-};
-
-/* Network buffer functions: */
-struct netbuf * netbuf_new (void);
-void netbuf_delete (struct netbuf *buf);
-void * netbuf_alloc (struct netbuf *buf, u16_t size);
-void netbuf_free (struct netbuf *buf);
-err_t netbuf_ref (struct netbuf *buf,
- const void *dataptr, u16_t size);
-void netbuf_chain (struct netbuf *head,
- struct netbuf *tail);
-
-err_t netbuf_data (struct netbuf *buf,
- void **dataptr, u16_t *len);
-s8_t netbuf_next (struct netbuf *buf);
-void netbuf_first (struct netbuf *buf);
-
-
-#define netbuf_copy_partial(buf, dataptr, len, offset) \
- pbuf_copy_partial((buf)->p, (dataptr), (len), (offset))
-#define netbuf_copy(buf,dataptr,len) netbuf_copy_partial(buf, dataptr, len, 0)
-#define netbuf_take(buf, dataptr, len) pbuf_take((buf)->p, dataptr, len)
-#define netbuf_len(buf) ((buf)->p->tot_len)
-#define netbuf_fromaddr(buf) (&((buf)->addr))
-#define netbuf_set_fromaddr(buf, fromaddr) ip_addr_set((&(buf)->addr), fromaddr)
-#define netbuf_fromport(buf) ((buf)->port)
-#if LWIP_NETBUF_RECVINFO
-#define netbuf_destaddr(buf) (&((buf)->toaddr))
-#define netbuf_set_destaddr(buf, destaddr) ip_addr_set((&(buf)->addr), destaddr)
-#define netbuf_destport(buf) (((buf)->flags & NETBUF_FLAG_DESTADDR) ? (buf)->toport_chksum : 0)
-#endif /* LWIP_NETBUF_RECVINFO */
-#if LWIP_CHECKSUM_ON_COPY
-#define netbuf_set_chksum(buf, chksum) do { (buf)->flags = NETBUF_FLAG_CHKSUM; \
- (buf)->toport_chksum = chksum; } while(0)
-#endif /* LWIP_CHECKSUM_ON_COPY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_NETBUF_H__ */
--- a/LPC2368/lwip/include/lwip/netdb.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * 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: Simon Goldschmidt
- *
- */
-#ifndef __LWIP_NETDB_H__
-#define __LWIP_NETDB_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_DNS && LWIP_SOCKET
-
-#include <stddef.h> /* for size_t */
-
-#include "lwip/inet.h"
-#include "lwip/sockets.h"
-
-/* some rarely used options */
-#ifndef LWIP_DNS_API_DECLARE_H_ERRNO
-#define LWIP_DNS_API_DECLARE_H_ERRNO 1
-#endif
-
-#ifndef LWIP_DNS_API_DEFINE_ERRORS
-#define LWIP_DNS_API_DEFINE_ERRORS 1
-#endif
-
-#ifndef LWIP_DNS_API_DECLARE_STRUCTS
-#define LWIP_DNS_API_DECLARE_STRUCTS 1
-#endif
-
-#if LWIP_DNS_API_DEFINE_ERRORS
-/** Errors used by the DNS API functions, h_errno can be one of them */
-#define EAI_NONAME 200
-#define EAI_SERVICE 201
-#define EAI_FAIL 202
-#define EAI_MEMORY 203
-
-#define HOST_NOT_FOUND 210
-#define NO_DATA 211
-#define NO_RECOVERY 212
-#define TRY_AGAIN 213
-#endif /* LWIP_DNS_API_DEFINE_ERRORS */
-
-#if LWIP_DNS_API_DECLARE_STRUCTS
-struct hostent {
- char *h_name; /* Official name of the host. */
- char **h_aliases; /* A pointer to an array of pointers to alternative host names,
- terminated by a null pointer. */
- int h_addrtype; /* Address type. */
- int h_length; /* The length, in bytes, of the address. */
- char **h_addr_list; /* A pointer to an array of pointers to network addresses (in
- network byte order) for the host, terminated by a null pointer. */
-#define h_addr h_addr_list[0] /* for backward compatibility */
-};
-
-struct addrinfo {
- int ai_flags; /* Input flags. */
- int ai_family; /* Address family of socket. */
- int ai_socktype; /* Socket type. */
- int ai_protocol; /* Protocol of socket. */
- socklen_t ai_addrlen; /* Length of socket address. */
- struct sockaddr *ai_addr; /* Socket address of socket. */
- char *ai_canonname; /* Canonical name of service location. */
- struct addrinfo *ai_next; /* Pointer to next in list. */
-};
-#endif /* LWIP_DNS_API_DECLARE_STRUCTS */
-
-#if LWIP_DNS_API_DECLARE_H_ERRNO
-/* application accessable error code set by the DNS API functions */
-extern int h_errno;
-#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/
-
-struct hostent *lwip_gethostbyname(const char *name);
-int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf,
- size_t buflen, struct hostent **result, int *h_errnop);
-void lwip_freeaddrinfo(struct addrinfo *ai);
-int lwip_getaddrinfo(const char *nodename,
- const char *servname,
- const struct addrinfo *hints,
- struct addrinfo **res);
-
-#if LWIP_COMPAT_SOCKETS
-#define gethostbyname(name) lwip_gethostbyname(name)
-#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \
- lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop)
-#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(addrinfo)
-#define getaddrinfo(nodname, servname, hints, res) \
- lwip_getaddrinfo(nodname, servname, hints, res)
-#endif /* LWIP_COMPAT_SOCKETS */
-
-#endif /* LWIP_DNS && LWIP_SOCKET */
-
-#endif /* __LWIP_NETDB_H__ */
--- a/LPC2368/lwip/include/lwip/netif.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
-/*
- * 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 __LWIP_NETIF_H__
-#define __LWIP_NETIF_H__
-
-#include "lwip/opt.h"
-
-#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
-
-#include "lwip/err.h"
-
-#include "lwip/ip_addr.h"
-
-#include "lwip/def.h"
-#include "lwip/pbuf.h"
-#if LWIP_DHCP
-struct dhcp;
-#endif
-#if LWIP_AUTOIP
-struct autoip;
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Throughout this file, IP addresses are expected to be in
- * the same byte order as in IP_PCB. */
-
-/* must be the maximum of all used hardware address lengths
- across all types of interfaces in use */
-#define NETIF_MAX_HWADDR_LEN 6U
-
-/* Whether the network interface is 'up'. This is
- * a software flag used to control whether this network
- * interface is enabled and processes traffic.
- * It is set by the startup code (for static IP configuration) or
- * by dhcp/autoip when an address has been assigned.
- */
-#define NETIF_FLAG_UP 0x01U
-/* If set, the netif has broadcast capability.
- * Set by the netif driver in its init function. */
-#define NETIF_FLAG_BROADCAST 0x02U
-/* If set, the netif is one end of a point-to-point connection.
- * Set by the netif driver in its init function. */
-#define NETIF_FLAG_POINTTOPOINT 0x04U
-/* If set, the interface is configured using DHCP.
- * Set by the DHCP code when starting or stopping DHCP. */
-#define NETIF_FLAG_DHCP 0x08U
-/* If set, the interface has an active link
- * (set by the network interface driver).
- * Either set by the netif driver in its init function (if the link
- * is up at that time) or at a later point once the link comes up
- * (if link detection is supported by the hardware). */
-#define NETIF_FLAG_LINK_UP 0x10U
-/* If set, the netif is an ethernet device using ARP.
- * Set by the netif driver in its init function.
- * Used to check input packet types and use of DHCP. */
-#define NETIF_FLAG_ETHARP 0x20U
-/* If set, the netif is an ethernet device. It might not use
- * ARP or TCP/IP if it is used for PPPoE only.
- */
-#define NETIF_FLAG_ETHERNET 0x40U
-/* If set, the netif has IGMP capability.
- * Set by the netif driver in its init function. */
-#define NETIF_FLAG_IGMP 0x80U
-
-/* Function prototype for netif init functions. Set up flags and output/linkoutput
- * callback functions in this function.
- *
- * @param netif The netif to initialize
- */
-typedef err_t (*netif_init_fn)(struct netif *netif);
-/* Function prototype for netif->input functions. This function is saved as 'input'
- * callback function in the netif struct. Call it when a packet has been received.
- *
- * @param p The received packet, copied into a pbuf
- * @param inp The netif which received the packet
- */
-typedef err_t (*netif_input_fn)(struct pbuf *p, struct netif *inp);
-/* Function prototype for netif->output functions. Called by lwIP when a packet
- * shall be sent. For ethernet netif, set this to 'etharp_output' and set
- * 'linkoutput'.
- *
- * @param netif The netif which shall send a packet
- * @param p The packet to send (p->payload points to IP header)
- * @param ipaddr The IP address to which the packet shall be sent
- */
-typedef err_t (*netif_output_fn)(struct netif *netif, struct pbuf *p,
- ip_addr_t *ipaddr);
-/* Function prototype for netif->linkoutput functions. Only used for ethernet
- * netifs. This function is called by ARP when a packet shall be sent.
- *
- * @param netif The netif which shall send a packet
- * @param p The packet to send (raw ethernet packet)
- */
-typedef err_t (*netif_linkoutput_fn)(struct netif *netif, struct pbuf *p);
-/* Function prototype for netif status- or link-callback functions. */
-typedef void (*netif_status_callback_fn)(struct netif *netif);
-/* Function prototype for netif igmp_mac_filter functions */
-typedef err_t (*netif_igmp_mac_filter_fn)(struct netif *netif,
- ip_addr_t *group, u8_t action);
-
-/* Generic data structure used for all lwIP network interfaces.
- * The following fields should be filled in by the initialization
- * function for the device driver: hwaddr_len, hwaddr[], mtu, flags */
-struct netif {
- /* pointer to next in linked list */
- struct netif *next;
-
- /* IP address configuration in network byte order */
- ip_addr_t ip_addr;
- ip_addr_t netmask;
- ip_addr_t gw;
-
- /* This function is called by the network device driver
- * to pass a packet up the TCP/IP stack. */
- netif_input_fn input;
- /* This function is called by the IP module when it wants
- * to send a packet on the interface. This function typically
- * first resolves the hardware address, then sends the packet. */
- netif_output_fn output;
- /* This function is called by the ARP module when it wants
- * to send a packet on the interface. This function outputs
- * the pbuf as-is on the link medium. */
- netif_linkoutput_fn linkoutput;
-#if LWIP_NETIF_STATUS_CALLBACK
- /* This function is called when the netif state is set to up or down
- */
- netif_status_callback_fn status_callback;
-#endif /* LWIP_NETIF_STATUS_CALLBACK */
-#if LWIP_NETIF_LINK_CALLBACK
- /* This function is called when the netif link is set to up or down
- */
- netif_status_callback_fn link_callback;
-#endif /* LWIP_NETIF_LINK_CALLBACK */
- /* This field can be set by the device driver and could point
- * to state information for the device. */
- void *state;
-#if LWIP_DHCP
- /* the DHCP client state information for this netif */
- struct dhcp *dhcp;
-#endif /* LWIP_DHCP */
-#if LWIP_AUTOIP
- /* the AutoIP client state information for this netif */
- struct autoip *autoip;
-#endif
-#if LWIP_NETIF_HOSTNAME
- /* the hostname for this netif, NULL is a valid value */
- char* hostname;
-#endif /* LWIP_NETIF_HOSTNAME */
- /* maximum transfer unit (in bytes) */
- u16_t mtu;
- /* number of bytes used in hwaddr */
- u8_t hwaddr_len;
- /* link level hardware address of this interface */
- u8_t hwaddr[NETIF_MAX_HWADDR_LEN];
- /* flags (see NETIF_FLAG_ above) */
- u8_t flags;
- /* descriptive abbreviation */
- char name[2];
- /* number of this interface */
- u8_t num;
-#if LWIP_SNMP
- /* link type (from "snmp_ifType" enum from snmp.h) */
- u8_t link_type;
- /* (estimate) link speed */
- u32_t link_speed;
- /* timestamp at last change made (up/down) */
- u32_t ts;
- /* counters */
- u32_t ifinoctets;
- u32_t ifinucastpkts;
- u32_t ifinnucastpkts;
- u32_t ifindiscards;
- u32_t ifoutoctets;
- u32_t ifoutucastpkts;
- u32_t ifoutnucastpkts;
- u32_t ifoutdiscards;
-#endif /* LWIP_SNMP */
-#if LWIP_IGMP
- /* This function could be called to add or delete a entry in the multicast
- filter table of the ethernet MAC.*/
- netif_igmp_mac_filter_fn igmp_mac_filter;
-#endif /* LWIP_IGMP */
-#if LWIP_NETIF_HWADDRHINT
- u8_t *addr_hint;
-#endif /* LWIP_NETIF_HWADDRHINT */
-#if ENABLE_LOOPBACK
- /* List of packets to be queued for ourselves. */
- struct pbuf *loop_first;
- struct pbuf *loop_last;
-#if LWIP_LOOPBACK_MAX_PBUFS
- u16_t loop_cnt_current;
-#endif /* LWIP_LOOPBACK_MAX_PBUFS */
-#endif /* ENABLE_LOOPBACK */
-};
-
-#if LWIP_SNMP
-#define NETIF_INIT_SNMP(netif, type, speed) \
- /* use "snmp_ifType" enum from snmp.h for "type", snmp_ifType_ethernet_csmacd by example */ \
- (netif)->link_type = (type); \
- /* your link speed here (units: bits per second) */ \
- (netif)->link_speed = (speed); \
- (netif)->ts = 0; \
- (netif)->ifinoctets = 0; \
- (netif)->ifinucastpkts = 0; \
- (netif)->ifinnucastpkts = 0; \
- (netif)->ifindiscards = 0; \
- (netif)->ifoutoctets = 0; \
- (netif)->ifoutucastpkts = 0; \
- (netif)->ifoutnucastpkts = 0; \
- (netif)->ifoutdiscards = 0
-#else /* LWIP_SNMP */
-#define NETIF_INIT_SNMP(netif, type, speed)
-#endif /* LWIP_SNMP */
-
-
-/* The list of network interfaces. */
-extern struct netif *netif_list;
-/* The default network interface. */
-extern struct netif *netif_default;
-
-void netif_init(void);
-
-struct netif *netif_add(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask,
- ip_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input);
-
-void
-netif_set_addr(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask,
- ip_addr_t *gw);
-void netif_remove(struct netif * netif);
-
-/* Returns a network interface given its name. The name is of the form
- "et0", where the first two letters are the "name" field in the
- netif structure, and the digit is in the num field in the same
- structure. */
-struct netif *netif_find(char *name);
-
-void netif_set_default(struct netif *netif);
-
-void netif_set_ipaddr(struct netif *netif, ip_addr_t *ipaddr);
-void netif_set_netmask(struct netif *netif, ip_addr_t *netmask);
-void netif_set_gw(struct netif *netif, ip_addr_t *gw);
-
-void netif_set_up(struct netif *netif);
-void netif_set_down(struct netif *netif);
-/* Ask if an interface is up */
-#define netif_is_up(netif) (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0)
-
-#if LWIP_NETIF_STATUS_CALLBACK
-void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback);
-#endif /* LWIP_NETIF_STATUS_CALLBACK */
-
-void netif_set_link_up(struct netif *netif);
-void netif_set_link_down(struct netif *netif);
-/* Ask if a link is up */
-#define netif_is_link_up(netif) (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0)
-
-#if LWIP_NETIF_LINK_CALLBACK
-void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback);
-#endif /* LWIP_NETIF_LINK_CALLBACK */
-
-#if LWIP_NETIF_HOSTNAME
-#define netif_set_hostname(netif, name) do { if((netif) != NULL) { (netif)->hostname = name; }}while(0)
-#define netif_get_hostname(netif) (((netif) != NULL) ? ((netif)->hostname) : NULL)
-#endif /* LWIP_NETIF_HOSTNAME */
-
-#if LWIP_IGMP
-#define netif_set_igmp_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->igmp_mac_filter = function; }}while(0)
-#define netif_get_igmp_mac_filter(netif) (((netif) != NULL) ? ((netif)->igmp_mac_filter) : NULL)
-#endif /* LWIP_IGMP */
-
-#if ENABLE_LOOPBACK
-err_t netif_loop_output(struct netif *netif, struct pbuf *p, ip_addr_t *dest_ip);
-void netif_poll(struct netif *netif);
-#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
-void netif_poll_all(void);
-#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
-#endif /* ENABLE_LOOPBACK */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_NETIF_H__ */
--- a/LPC2368/lwip/include/lwip/netifapi.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * 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.
- *
- */
-
-#ifndef __LWIP_NETIFAPI_H__
-#define __LWIP_NETIFAPI_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/sys.h"
-#include "lwip/netif.h"
-#include "lwip/dhcp.h"
-#include "lwip/autoip.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (*netifapi_void_fn)(struct netif *netif);
-typedef err_t (*netifapi_errt_fn)(struct netif *netif);
-
-struct netifapi_msg_msg {
-#if !LWIP_TCPIP_CORE_LOCKING
- sys_sem_t sem;
-#endif /* !LWIP_TCPIP_CORE_LOCKING */
- err_t err;
- struct netif *netif;
- union {
- struct {
- ip_addr_t *ipaddr;
- ip_addr_t *netmask;
- ip_addr_t *gw;
- void *state;
- netif_init_fn init;
- netif_input_fn input;
- } add;
- struct {
- netifapi_void_fn voidfunc;
- netifapi_errt_fn errtfunc;
- } common;
- } msg;
-};
-
-struct netifapi_msg {
- void (* function)(struct netifapi_msg_msg *msg);
- struct netifapi_msg_msg msg;
-};
-
-
-/* API for application */
-err_t netifapi_netif_add ( struct netif *netif,
- ip_addr_t *ipaddr,
- ip_addr_t *netmask,
- ip_addr_t *gw,
- void *state,
- netif_init_fn init,
- netif_input_fn input);
-
-err_t netifapi_netif_set_addr ( struct netif *netif,
- ip_addr_t *ipaddr,
- ip_addr_t *netmask,
- ip_addr_t *gw );
-
-err_t netifapi_netif_common ( struct netif *netif,
- netifapi_void_fn voidfunc,
- netifapi_errt_fn errtfunc);
-
-#define netifapi_netif_remove(n) netifapi_netif_common(n, netif_remove, NULL)
-#define netifapi_netif_set_up(n) netifapi_netif_common(n, netif_set_up, NULL)
-#define netifapi_netif_set_down(n) netifapi_netif_common(n, netif_set_down, NULL)
-#define netifapi_netif_set_default(n) netifapi_netif_common(n, netif_set_default, NULL)
-#define netifapi_dhcp_start(n) netifapi_netif_common(n, NULL, dhcp_start)
-#define netifapi_dhcp_stop(n) netifapi_netif_common(n, dhcp_stop, NULL)
-#define netifapi_autoip_start(n) netifapi_netif_common(n, NULL, autoip_start)
-#define netifapi_autoip_stop(n) netifapi_netif_common(n, NULL, autoip_stop)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_NETIF_API */
-
-#endif /* __LWIP_NETIFAPI_H__ */
--- a/LPC2368/lwip/include/lwip/opt.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2040 +0,0 @@
-/**
- * @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 __LWIP_OPT_H__
-#define __LWIP_OPT_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"
-
-/*
- -----------------------------------------------
- ---------- 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.
- */
-#ifndef SYS_LIGHTWEIGHT_PROT
-#define SYS_LIGHTWEIGHT_PROT 0
-#endif
-
-/**
- * NO_SYS==1: Provides VERY minimal functionality. Otherwise,
- * use lwIP facilities.
- */
-#ifndef NO_SYS
-#define NO_SYS 0
-#endif
-
-/**
- * NO_SYS_NO_TIMERS==1: Drop support for sys_timeout when NO_SYS==1
- * Mainly for compatibility to old versions.
- */
-#ifndef NO_SYS_NO_TIMERS
-#define NO_SYS_NO_TIMERS 0
-#endif
-
-/**
- * MEMCPY: override this if you have a faster implementation at hand than the
- * one included in your C library
- */
-#ifndef MEMCPY
-#define MEMCPY(dst,src,len) memcpy(dst,src,len)
-#endif
-
-/**
- * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a
- * call to memcpy() if the length is known at compile time and is small.
- */
-#ifndef SMEMCPY
-#define SMEMCPY(dst,src,len) memcpy(dst,src,len)
-#endif
-
-/*
- ------------------------------------
- ---------- Memory options ----------
- ------------------------------------
-*/
-/**
- * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library
- * instead of the lwip internal allocator. Can save code size if you
- * already use it.
- */
-#ifndef MEM_LIBC_MALLOC
-#define MEM_LIBC_MALLOC 0
-#endif
-
-/**
-* MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator.
-* Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution
-* speed and usage from interrupts!
-*/
-#ifndef MEMP_MEM_MALLOC
-#define MEMP_MEM_MALLOC 0
-#endif
-
-/**
- * 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
- */
-#ifndef MEM_ALIGNMENT
-#define MEM_ALIGNMENT 1
-#endif
-
-/**
- * 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.
- */
-#ifndef MEM_SIZE
-#define MEM_SIZE 1600
-#endif
-
-/**
- * MEMP_SEPARATE_POOLS: if defined to 1, each pool is placed in its own array.
- * This can be used to individually change the location of each pool.
- * Default is one big array for all pools
- */
-#ifndef MEMP_SEPARATE_POOLS
-#define MEMP_SEPARATE_POOLS 0
-#endif
-
-/**
- * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable
- * amount of bytes before and after each memp element in every pool and fills
- * it with a prominent default value.
- * MEMP_OVERFLOW_CHECK == 0 no checking
- * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed
- * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time
- * memp_malloc() or memp_free() is called (useful but slow!)
- */
-#ifndef MEMP_OVERFLOW_CHECK
-#define MEMP_OVERFLOW_CHECK 0
-#endif
-
-/**
- * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make
- * sure that there are no cycles in the linked lists.
- */
-#ifndef MEMP_SANITY_CHECK
-#define MEMP_SANITY_CHECK 0
-#endif
-
-/**
- * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set
- * of memory pools of various sizes. When mem_malloc is called, an element of
- * the smallest pool that can provide the length needed is returned.
- * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled.
- */
-#ifndef MEM_USE_POOLS
-#define MEM_USE_POOLS 0
-#endif
-
-/**
- * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next
- * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more
- * reliable. */
-#ifndef MEM_USE_POOLS_TRY_BIGGER_POOL
-#define MEM_USE_POOLS_TRY_BIGGER_POOL 0
-#endif
-
-/**
- * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h
- * that defines additional pools beyond the "standard" ones required
- * by lwIP. If you set this to 1, you must have lwippools.h in your
- * inlude path somewhere.
- */
-#ifndef MEMP_USE_CUSTOM_POOLS
-#define MEMP_USE_CUSTOM_POOLS 0
-#endif
-
-/**
- * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from
- * interrupt context (or another context that doesn't allow waiting for a
- * semaphore).
- * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT,
- * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs
- * with each loop so that mem_free can run.
- *
- * ATTENTION: As you can see from the above description, this leads to dis-/
- * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc
- * can need longer.
- *
- * If you don't want that, at least for NO_SYS=0, you can still use the following
- * functions to enqueue a deallocation call which then runs in the tcpip_thread
- * context:
- * - pbuf_free_callback(p);
- * - mem_free_callback(m);
- */
-#ifndef LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0
-#endif
-
-/*
- ------------------------------------------------
- ---------- 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.
- */
-#ifndef MEMP_NUM_PBUF
-#define MEMP_NUM_PBUF 16
-#endif
-
-/**
- * MEMP_NUM_RAW_PCB: Number of raw connection PCBs
- * (requires the LWIP_RAW option)
- */
-#ifndef MEMP_NUM_RAW_PCB
-#define MEMP_NUM_RAW_PCB 4
-#endif
-
-/**
- * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
- * per active UDP "connection".
- * (requires the LWIP_UDP option)
- */
-#ifndef MEMP_NUM_UDP_PCB
-#define MEMP_NUM_UDP_PCB 4
-#endif
-
-/**
- * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections.
- * (requires the LWIP_TCP option)
- */
-#ifndef MEMP_NUM_TCP_PCB
-#define MEMP_NUM_TCP_PCB 5
-#endif
-
-/**
- * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections.
- * (requires the LWIP_TCP option)
- */
-#ifndef MEMP_NUM_TCP_PCB_LISTEN
-#define MEMP_NUM_TCP_PCB_LISTEN 8
-#endif
-
-/**
- * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments.
- * (requires the LWIP_TCP option)
- */
-#ifndef MEMP_NUM_TCP_SEG
-#define MEMP_NUM_TCP_SEG 16
-#endif
-
-/**
- * MEMP_NUM_REASSDATA: the number of IP packets simultaneously queued for
- * reassembly (whole packets, not fragments!)
- */
-#ifndef MEMP_NUM_REASSDATA
-#define MEMP_NUM_REASSDATA 5
-#endif
-
-/**
- * MEMP_NUM_FRAG_PBUF: the number of IP fragments simultaneously sent
- * (fragments, not whole packets!).
- * This is only used with IP_FRAG_USES_STATIC_BUF==0 and
- * LWIP_NETIF_TX_SINGLE_PBUF==0 and only has to be > 1 with DMA-enabled MACs
- * where the packet is not yet sent when netif->output returns.
- */
-#ifndef MEMP_NUM_FRAG_PBUF
-#define MEMP_NUM_FRAG_PBUF 15
-#endif
-
-/**
- * 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)
- */
-#ifndef MEMP_NUM_ARP_QUEUE
-#define MEMP_NUM_ARP_QUEUE 30
-#endif
-
-/**
- * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces
- * can be members et the same time (one per netif - allsystems group -, plus one
- * per netif membership).
- * (requires the LWIP_IGMP option)
- */
-#ifndef MEMP_NUM_IGMP_GROUP
-#define MEMP_NUM_IGMP_GROUP 8
-#endif
-
-/**
- * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts.
- * (requires NO_SYS==0)
- */
-#ifndef MEMP_NUM_SYS_TIMEOUT
-#define MEMP_NUM_SYS_TIMEOUT 3
-#endif
-
-/**
- * MEMP_NUM_NETBUF: the number of struct netbufs.
- * (only needed if you use the sequential API, like api_lib.c)
- */
-#ifndef MEMP_NUM_NETBUF
-#define MEMP_NUM_NETBUF 2
-#endif
-
-/**
- * MEMP_NUM_NETCONN: the number of struct netconns.
- * (only needed if you use the sequential API, like api_lib.c)
- */
-#ifndef MEMP_NUM_NETCONN
-#define MEMP_NUM_NETCONN 4
-#endif
-
-/**
- * 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)
- */
-#ifndef MEMP_NUM_TCPIP_MSG_API
-#define MEMP_NUM_TCPIP_MSG_API 8
-#endif
-
-/**
- * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used
- * for incoming packets.
- * (only needed if you use tcpip.c)
- */
-#ifndef MEMP_NUM_TCPIP_MSG_INPKT
-#define MEMP_NUM_TCPIP_MSG_INPKT 8
-#endif
-
-/**
- * MEMP_NUM_SNMP_NODE: the number of leafs in the SNMP tree.
- */
-#ifndef MEMP_NUM_SNMP_NODE
-#define MEMP_NUM_SNMP_NODE 50
-#endif
-
-/**
- * MEMP_NUM_SNMP_ROOTNODE: the number of branches in the SNMP tree.
- * Every branch has one leaf (MEMP_NUM_SNMP_NODE) at least!
- */
-#ifndef MEMP_NUM_SNMP_ROOTNODE
-#define MEMP_NUM_SNMP_ROOTNODE 30
-#endif
-
-/**
- * MEMP_NUM_SNMP_VARBIND: the number of concurrent requests (does not have to
- * be changed normally) - 2 of these are used per request (1 for input,
- * 1 for output)
- */
-#ifndef MEMP_NUM_SNMP_VARBIND
-#define MEMP_NUM_SNMP_VARBIND 2
-#endif
-
-/**
- * MEMP_NUM_SNMP_VALUE: the number of OID or values concurrently used
- * (does not have to be changed normally) - 3 of these are used per request
- * (1 for the value read and 2 for OIDs - input and output)
- */
-#ifndef MEMP_NUM_SNMP_VALUE
-#define MEMP_NUM_SNMP_VALUE 3
-#endif
-
-/**
- * MEMP_NUM_NETDB: the number of concurrently running lwip_addrinfo() calls
- * (before freeing the corresponding memory using lwip_freeaddrinfo()).
- */
-#ifndef MEMP_NUM_NETDB
-#define MEMP_NUM_NETDB 1
-#endif
-
-/**
- * MEMP_NUM_LOCALHOSTLIST: the number of host entries in the local host list
- * if DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1.
- */
-#ifndef MEMP_NUM_LOCALHOSTLIST
-#define MEMP_NUM_LOCALHOSTLIST 1
-#endif
-
-/**
- * MEMP_NUM_PPPOE_INTERFACES: the number of concurrently active PPPoE
- * interfaces (only used with PPPOE_SUPPORT==1)
- */
-#ifndef MEMP_NUM_PPPOE_INTERFACES
-#define MEMP_NUM_PPPOE_INTERFACES 1
-#endif
-
-/**
- * PBUF_POOL_SIZE: the number of buffers in the pbuf pool.
- */
-#ifndef PBUF_POOL_SIZE
-#define PBUF_POOL_SIZE 16
-#endif
-
-/*
- ---------------------------------
- ---------- ARP options ----------
- ---------------------------------
-*/
-/**
- * LWIP_ARP==1: Enable ARP functionality.
- */
-#ifndef LWIP_ARP
-#define LWIP_ARP 1
-#endif
-
-/**
- * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached.
- */
-#ifndef ARP_TABLE_SIZE
-#define ARP_TABLE_SIZE 10
-#endif
-
-/**
- * ARP_QUEUEING==1: Outgoing packets are queued during hardware address
- * resolution.
- */
-#ifndef ARP_QUEUEING
-#define ARP_QUEUEING 1
-#endif
-
-/**
- * ETHARP_TRUST_IP_MAC==1: Incoming IP packets cause the ARP table to be
- * updated with the source MAC and IP addresses supplied in the packet.
- * You may want to disable this if you do not trust LAN peers to have the
- * correct addresses, or as a limited approach to attempt to handle
- * spoofing. If disabled, lwIP will need to make a new ARP request if
- * the peer is not already in the ARP table, adding a little latency.
- * The peer *is* in the ARP table if it requested our address before.
- * Also notice that this slows down input processing of every IP packet!
- */
-#ifndef ETHARP_TRUST_IP_MAC
-#define ETHARP_TRUST_IP_MAC 0
-#endif
-
-/**
- * ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header.
- * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check.
- * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted.
- * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted.
- */
-#ifndef ETHARP_SUPPORT_VLAN
-#define ETHARP_SUPPORT_VLAN 0
-#endif
-
-/** LWIP_ETHERNET==1: enable ethernet support for PPPoE even though ARP
- * might be disabled
- */
-#ifndef LWIP_ETHERNET
-#define LWIP_ETHERNET (LWIP_ARP || PPPOE_SUPPORT)
-#endif
-
-/** ETH_PAD_SIZE: number of bytes added before the ethernet header to ensure
- * alignment of payload after that header. Since the header is 14 bytes long,
- * without this padding e.g. addresses in the IP header will not be aligned
- * on a 32-bit boundary, so setting this to 2 can speed up 32-bit-platforms.
- */
-#ifndef ETH_PAD_SIZE
-#define ETH_PAD_SIZE 0
-#endif
-
-/** ETHARP_SUPPORT_STATIC_ENTRIES==1: enable code to support static ARP table
- * entries (using etharp_add_static_entry/etharp_remove_static_entry).
- */
-#ifndef ETHARP_SUPPORT_STATIC_ENTRIES
-#define ETHARP_SUPPORT_STATIC_ENTRIES 0
-#endif
-
-
-/*
- --------------------------------
- ---------- 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.
- */
-#ifndef IP_FORWARD
-#define IP_FORWARD 0
-#endif
-
-/**
- * IP_OPTIONS_ALLOWED: 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).
- */
-#ifndef IP_OPTIONS_ALLOWED
-#define IP_OPTIONS_ALLOWED 1
-#endif
-
-/**
- * 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.
- */
-#ifndef IP_REASSEMBLY
-#define IP_REASSEMBLY 1
-#endif
-
-/**
- * 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.
- */
-#ifndef IP_FRAG
-#define IP_FRAG 1
-#endif
-
-/**
- * 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.
- */
-#ifndef IP_REASS_MAXAGE
-#define IP_REASS_MAXAGE 3
-#endif
-
-/**
- * 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!
- */
-#ifndef IP_REASS_MAX_PBUFS
-#define IP_REASS_MAX_PBUFS 10
-#endif
-
-/**
- * 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 (or with LWIP_NETIF_TX_SINGLE_PBUF==1,
- * new PBUF_RAM pbufs are used for fragments).
- * ATTENTION: IP_FRAG_USES_STATIC_BUF==1 may not be used for DMA-enabled MACs!
- */
-#ifndef IP_FRAG_USES_STATIC_BUF
-#define IP_FRAG_USES_STATIC_BUF 0
-#endif
-
-/**
- * IP_FRAG_MAX_MTU: Assumed max MTU on any interface for IP frag buffer
- * (requires IP_FRAG_USES_STATIC_BUF==1)
- */
-#if IP_FRAG_USES_STATIC_BUF && !defined(IP_FRAG_MAX_MTU)
-#define IP_FRAG_MAX_MTU 1500
-#endif
-
-/**
- * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers.
- */
-#ifndef IP_DEFAULT_TTL
-#define IP_DEFAULT_TTL 255
-#endif
-
-/**
- * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast
- * filter per pcb on udp and raw send operations. To enable broadcast filter
- * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1.
- */
-#ifndef IP_SOF_BROADCAST
-#define IP_SOF_BROADCAST 0
-#endif
-
-/**
- * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast
- * filter on recv operations.
- */
-#ifndef IP_SOF_BROADCAST_RECV
-#define IP_SOF_BROADCAST_RECV 0
-#endif
-
-/*
- ----------------------------------
- ---------- ICMP options ----------
- ----------------------------------
-*/
-/**
- * LWIP_ICMP==1: Enable ICMP module inside the IP stack.
- * Be careful, disable that make your product non-compliant to RFC1122
- */
-#ifndef LWIP_ICMP
-#define LWIP_ICMP 1
-#endif
-
-/**
- * ICMP_TTL: Default value for Time-To-Live used by ICMP packets.
- */
-#ifndef ICMP_TTL
-#define ICMP_TTL (IP_DEFAULT_TTL)
-#endif
-
-/**
- * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only)
- */
-#ifndef LWIP_BROADCAST_PING
-#define LWIP_BROADCAST_PING 0
-#endif
-
-/**
- * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only)
- */
-#ifndef LWIP_MULTICAST_PING
-#define LWIP_MULTICAST_PING 0
-#endif
-
-/*
- ---------------------------------
- ---------- RAW options ----------
- ---------------------------------
-*/
-/**
- * LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
- */
-#ifndef LWIP_RAW
-#define LWIP_RAW 1
-#endif
-
-/**
- * LWIP_RAW==1: Enable application layer to hook into the IP layer itself.
- */
-#ifndef RAW_TTL
-#define RAW_TTL (IP_DEFAULT_TTL)
-#endif
-
-/*
- ----------------------------------
- ---------- DHCP options ----------
- ----------------------------------
-*/
-/**
- * LWIP_DHCP==1: Enable DHCP module.
- */
-#ifndef LWIP_DHCP
-#define LWIP_DHCP 0
-#endif
-
-/**
- * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address.
- */
-#ifndef DHCP_DOES_ARP_CHECK
-#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP))
-#endif
-
-/*
- ------------------------------------
- ---------- AUTOIP options ----------
- ------------------------------------
-*/
-/**
- * LWIP_AUTOIP==1: Enable AUTOIP module.
- */
-#ifndef LWIP_AUTOIP
-#define LWIP_AUTOIP 0
-#endif
-
-/**
- * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on
- * the same interface at the same time.
- */
-#ifndef LWIP_DHCP_AUTOIP_COOP
-#define LWIP_DHCP_AUTOIP_COOP 0
-#endif
-
-/**
- * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes
- * that should be sent before falling back on AUTOIP. This can be set
- * as low as 1 to get an AutoIP address very quickly, but you should
- * be prepared to handle a changing IP address when DHCP overrides
- * AutoIP.
- */
-#ifndef LWIP_DHCP_AUTOIP_COOP_TRIES
-#define LWIP_DHCP_AUTOIP_COOP_TRIES 9
-#endif
-
-/*
- ----------------------------------
- ---------- SNMP options ----------
- ----------------------------------
-*/
-/**
- * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP
- * transport.
- */
-#ifndef LWIP_SNMP
-#define LWIP_SNMP 0
-#endif
-
-/**
- * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will
- * allow. At least one request buffer is required.
- * Does not have to be changed unless external MIBs answer request asynchronously
- */
-#ifndef SNMP_CONCURRENT_REQUESTS
-#define SNMP_CONCURRENT_REQUESTS 1
-#endif
-
-/**
- * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap
- * destination is required
- */
-#ifndef SNMP_TRAP_DESTINATIONS
-#define SNMP_TRAP_DESTINATIONS 1
-#endif
-
-/**
- * SNMP_PRIVATE_MIB:
- * When using a private MIB, you have to create a file 'private_mib.h' that contains
- * a 'struct mib_array_node mib_private' which contains your MIB.
- */
-#ifndef SNMP_PRIVATE_MIB
-#define SNMP_PRIVATE_MIB 0
-#endif
-
-/**
- * Only allow SNMP write actions that are 'safe' (e.g. disabeling netifs is not
- * a safe action and disabled when SNMP_SAFE_REQUESTS = 1).
- * Unsafe requests are disabled by default!
- */
-#ifndef SNMP_SAFE_REQUESTS
-#define SNMP_SAFE_REQUESTS 1
-#endif
-
-/**
- * The maximum length of strings used. This affects the size of
- * MEMP_SNMP_VALUE elements.
- */
-#ifndef SNMP_MAX_OCTET_STRING_LEN
-#define SNMP_MAX_OCTET_STRING_LEN 127
-#endif
-
-/**
- * The maximum depth of the SNMP tree.
- * With private MIBs enabled, this depends on your MIB!
- * This affects the size of MEMP_SNMP_VALUE elements.
- */
-#ifndef SNMP_MAX_TREE_DEPTH
-#define SNMP_MAX_TREE_DEPTH 15
-#endif
-
-/**
- * The size of the MEMP_SNMP_VALUE elements, normally calculated from
- * SNMP_MAX_OCTET_STRING_LEN and SNMP_MAX_TREE_DEPTH.
- */
-#ifndef SNMP_MAX_VALUE_SIZE
-#define SNMP_MAX_VALUE_SIZE LWIP_MAX((SNMP_MAX_OCTET_STRING_LEN)+1, sizeof(s32_t)*(SNMP_MAX_TREE_DEPTH))
-#endif
-
-/*
- ----------------------------------
- ---------- IGMP options ----------
- ----------------------------------
-*/
-/**
- * LWIP_IGMP==1: Turn on IGMP module.
- */
-#ifndef LWIP_IGMP
-#define LWIP_IGMP 0
-#endif
-
-/*
- ----------------------------------
- ---------- DNS options -----------
- ----------------------------------
-*/
-/**
- * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS
- * transport.
- */
-#ifndef LWIP_DNS
-#define LWIP_DNS 0
-#endif
-
-/** DNS maximum number of entries to maintain locally. */
-#ifndef DNS_TABLE_SIZE
-#define DNS_TABLE_SIZE 4
-#endif
-
-/** DNS maximum host name length supported in the name table. */
-#ifndef DNS_MAX_NAME_LENGTH
-#define DNS_MAX_NAME_LENGTH 256
-#endif
-
-/** The maximum of DNS servers */
-#ifndef DNS_MAX_SERVERS
-#define DNS_MAX_SERVERS 2
-#endif
-
-/** DNS do a name checking between the query and the response. */
-#ifndef DNS_DOES_NAME_CHECK
-#define DNS_DOES_NAME_CHECK 1
-#endif
-
-/** DNS message max. size. Default value is RFC compliant. */
-#ifndef DNS_MSG_SIZE
-#define DNS_MSG_SIZE 512
-#endif
-
-/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled,
- * you have to define
- * #define DNS_LOCAL_HOSTLIST_INIT {{"host1", 0x123}, {"host2", 0x234}}
- * (an array of structs name/address, where address is an u32_t in network
- * byte order).
- *
- * Instead, you can also use an external function:
- * #define DNS_LOOKUP_LOCAL_EXTERN(x) extern u32_t my_lookup_function(const char *name)
- * that returns the IP address or INADDR_NONE if not found.
- */
-#ifndef DNS_LOCAL_HOSTLIST
-#define DNS_LOCAL_HOSTLIST 0
-#endif /* DNS_LOCAL_HOSTLIST */
-
-/** If this is turned on, the local host-list can be dynamically changed
- * at runtime. */
-#ifndef DNS_LOCAL_HOSTLIST_IS_DYNAMIC
-#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0
-#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
-
-/*
- ---------------------------------
- ---------- UDP options ----------
- ---------------------------------
-*/
-/**
- * LWIP_UDP==1: Turn on UDP.
- */
-#ifndef LWIP_UDP
-#define LWIP_UDP 1
-#endif
-
-/**
- * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP)
- */
-#ifndef LWIP_UDPLITE
-#define LWIP_UDPLITE 0
-#endif
-
-/**
- * UDP_TTL: Default Time-To-Live value.
- */
-#ifndef UDP_TTL
-#define UDP_TTL (IP_DEFAULT_TTL)
-#endif
-
-/**
- * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf.
- */
-#ifndef LWIP_NETBUF_RECVINFO
-#define LWIP_NETBUF_RECVINFO 0
-#endif
-
-/*
- ---------------------------------
- ---------- TCP options ----------
- ---------------------------------
-*/
-/**
- * LWIP_TCP==1: Turn on TCP.
- */
-#ifndef LWIP_TCP
-#define LWIP_TCP 1
-#endif
-
-/**
- * TCP_TTL: Default Time-To-Live value.
- */
-#ifndef TCP_TTL
-#define TCP_TTL (IP_DEFAULT_TTL)
-#endif
-
-/**
- * TCP_WND: The size of a TCP window. This must be at least
- * (2 * TCP_MSS) for things to work well
- */
-#ifndef TCP_WND
-#define TCP_WND (4 * TCP_MSS)
-#endif
-
-/**
- * TCP_MAXRTX: Maximum number of retransmissions of data segments.
- */
-#ifndef TCP_MAXRTX
-#define TCP_MAXRTX 12
-#endif
-
-/**
- * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments.
- */
-#ifndef TCP_SYNMAXRTX
-#define TCP_SYNMAXRTX 6
-#endif
-
-/**
- * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order.
- * Define to 0 if your device is low on memory.
- */
-#ifndef TCP_QUEUE_OOSEQ
-#define TCP_QUEUE_OOSEQ (LWIP_TCP)
-#endif
-
-/**
- * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default,
- * you might want to increase this.)
- * For the receive side, this MSS is advertised to the remote side
- * when opening a connection. For the transmit size, this MSS sets
- * an upper limit on the MSS advertised by the remote host.
- */
-#ifndef TCP_MSS
-#define TCP_MSS 536
-#endif
-
-/**
- * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really
- * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which
- * reflects the available reassembly buffer size at the remote host) and the
- * largest size permitted by the IP layer" (RFC 1122)
- * Setting this to 1 enables code that checks TCP_MSS against the MTU of the
- * netif used for a connection and limits the MSS if it would be too big otherwise.
- */
-#ifndef TCP_CALCULATE_EFF_SEND_MSS
-#define TCP_CALCULATE_EFF_SEND_MSS 1
-#endif
-
-
-/**
- * TCP_SND_BUF: TCP sender buffer space (bytes).
- */
-#ifndef TCP_SND_BUF
-#define TCP_SND_BUF 256
-#endif
-
-/**
- * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
- * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work.
- */
-#ifndef TCP_SND_QUEUELEN
-#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF)/(TCP_MSS))
-#endif
-
-/**
- * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than
- * TCP_SND_BUF. It is the amount of space which must be available in the
- * TCP snd_buf for select to return writable (combined with TCP_SNDQUEUELOWAT).
- */
-#ifndef TCP_SNDLOWAT
-#define TCP_SNDLOWAT ((TCP_SND_BUF)/2)
-#endif
-
-/**
- * TCP_SNDQUEUELOWAT: TCP writable bufs (pbuf count). This must be grater
- * than TCP_SND_QUEUELEN. If the number of pbufs queued on a pcb drops below
- * this number, select returns writable (combined with TCP_SNDLOWAT).
- */
-#ifndef TCP_SNDQUEUELOWAT
-#define TCP_SNDQUEUELOWAT ((TCP_SND_QUEUELEN)/2)
-#endif
-
-/**
- * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb.
- */
-#ifndef TCP_LISTEN_BACKLOG
-#define TCP_LISTEN_BACKLOG 0
-#endif
-
-/**
- * The maximum allowed backlog for TCP listen netconns.
- * This backlog is used unless another is explicitly specified.
- * 0xff is the maximum (u8_t).
- */
-#ifndef TCP_DEFAULT_LISTEN_BACKLOG
-#define TCP_DEFAULT_LISTEN_BACKLOG 0xff
-#endif
-
-/**
- * TCP_OVERSIZE: The maximum number of bytes that tcp_write may
- * allocate ahead of time in an attempt to create shorter pbuf chains
- * for transmission. The meaningful range is 0 to TCP_MSS. Some
- * suggested values are:
- *
- * 0: Disable oversized allocation. Each tcp_write() allocates a new
- pbuf (old behaviour).
- * 1: Allocate size-aligned pbufs with minimal excess. Use this if your
- * scatter-gather DMA requires aligned fragments.
- * 128: Limit the pbuf/memory overhead to 20%.
- * TCP_MSS: Try to create unfragmented TCP packets.
- * TCP_MSS/4: Try to create 4 fragments or less per TCP packet.
- */
-#ifndef TCP_OVERSIZE
-#define TCP_OVERSIZE TCP_MSS
-#endif
-
-/**
- * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option.
- */
-#ifndef LWIP_TCP_TIMESTAMPS
-#define LWIP_TCP_TIMESTAMPS 0
-#endif
-
-/**
- * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an
- * explicit window update
- */
-#ifndef TCP_WND_UPDATE_THRESHOLD
-#define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4)
-#endif
-
-/**
- * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1.
- * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all
- * events (accept, sent, etc) that happen in the system.
- * LWIP_CALLBACK_API==1: The PCB callback function is called directly
- * for the event.
- */
-#ifndef LWIP_EVENT_API
-#define LWIP_EVENT_API 0
-#define LWIP_CALLBACK_API 1
-#else
-#define LWIP_EVENT_API 1
-#define LWIP_CALLBACK_API 0
-#endif
-
-
-/*
- ----------------------------------
- ---------- 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.
- */
-#ifndef PBUF_LINK_HLEN
-#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE)
-#endif
-
-/**
- * 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.
- */
-#ifndef PBUF_POOL_BUFSIZE
-#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN)
-#endif
-
-/*
- ------------------------------------------------
- ---------- Network Interfaces options ----------
- ------------------------------------------------
-*/
-/**
- * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname
- * field.
- */
-#ifndef LWIP_NETIF_HOSTNAME
-#define LWIP_NETIF_HOSTNAME 0
-#endif
-
-/**
- * LWIP_NETIF_API==1: Support netif api (in netifapi.c)
- */
-#ifndef LWIP_NETIF_API
-#define LWIP_NETIF_API 0
-#endif
-
-/**
- * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface
- * changes its up/down status (i.e., due to DHCP IP acquistion)
- */
-#ifndef LWIP_NETIF_STATUS_CALLBACK
-#define LWIP_NETIF_STATUS_CALLBACK 0
-#endif
-
-/**
- * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
- * whenever the link changes (i.e., link down)
- */
-#ifndef LWIP_NETIF_LINK_CALLBACK
-#define LWIP_NETIF_LINK_CALLBACK 0
-#endif
-
-/**
- * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table
- * indices) in struct netif. TCP and UDP can make use of this to prevent
- * scanning the ARP table for every sent packet. While this is faster for big
- * ARP tables or many concurrent connections, it might be counterproductive
- * if you have a tiny ARP table or if there never are concurrent connections.
- */
-#ifndef LWIP_NETIF_HWADDRHINT
-#define LWIP_NETIF_HWADDRHINT 0
-#endif
-
-/**
- * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP
- * address equal to the netif IP address, looping them back up the stack.
- */
-#ifndef LWIP_NETIF_LOOPBACK
-#define LWIP_NETIF_LOOPBACK 0
-#endif
-
-/**
- * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback
- * sending for each netif (0 = disabled)
- */
-#ifndef LWIP_LOOPBACK_MAX_PBUFS
-#define LWIP_LOOPBACK_MAX_PBUFS 0
-#endif
-
-/**
- * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in
- * the system, as netifs must change how they behave depending on this setting
- * for the LWIP_NETIF_LOOPBACK option to work.
- * Setting this is needed to avoid reentering non-reentrant functions like
- * tcp_input().
- * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a
- * multithreaded environment like tcpip.c. In this case, netif->input()
- * is called directly.
- * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup.
- * The packets are put on a list and netif_poll() must be called in
- * the main application loop.
- */
-#ifndef LWIP_NETIF_LOOPBACK_MULTITHREADING
-#define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS)
-#endif
-
-/**
- * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data
- * to be sent into one single pbuf. This is for compatibility with DMA-enabled
- * MACs that do not support scatter-gather.
- * Beware that this might involve CPU-memcpy before transmitting that would not
- * be needed without this flag! Use this only if you need to!
- *
- * @todo: TCP and IP-frag do not work with this, yet:
- */
-#ifndef LWIP_NETIF_TX_SINGLE_PBUF
-#define LWIP_NETIF_TX_SINGLE_PBUF 0
-#endif /* LWIP_NETIF_TX_SINGLE_PBUF */
-
-/*
- ------------------------------------
- ---------- LOOPIF options ----------
- ------------------------------------
-*/
-/**
- * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c
- */
-#ifndef LWIP_HAVE_LOOPIF
-#define LWIP_HAVE_LOOPIF 0
-#endif
-
-/*
- ------------------------------------
- ---------- SLIPIF options ----------
- ------------------------------------
-*/
-/**
- * LWIP_HAVE_SLIPIF==1: Support slip interface and slipif.c
- */
-#ifndef LWIP_HAVE_SLIPIF
-#define LWIP_HAVE_SLIPIF 0
-#endif
-
-/*
- ------------------------------------
- ---------- Thread options ----------
- ------------------------------------
-*/
-/**
- * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread.
- */
-#ifndef TCPIP_THREAD_NAME
-#define TCPIP_THREAD_NAME "tcpip_thread"
-#endif
-
-/**
- * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread.
- * The stack size value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef TCPIP_THREAD_STACKSIZE
-#define TCPIP_THREAD_STACKSIZE 0
-#endif
-
-/**
- * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread.
- * The priority value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef TCPIP_THREAD_PRIO
-#define TCPIP_THREAD_PRIO 1
-#endif
-
-/**
- * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages
- * The queue size value itself is platform-dependent, but is passed to
- * sys_mbox_new() when tcpip_init is called.
- */
-#ifndef TCPIP_MBOX_SIZE
-#define TCPIP_MBOX_SIZE 0
-#endif
-
-/**
- * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread.
- */
-#ifndef SLIPIF_THREAD_NAME
-#define SLIPIF_THREAD_NAME "slipif_loop"
-#endif
-
-/**
- * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread.
- * The stack size value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef SLIPIF_THREAD_STACKSIZE
-#define SLIPIF_THREAD_STACKSIZE 0
-#endif
-
-/**
- * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread.
- * The priority value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef SLIPIF_THREAD_PRIO
-#define SLIPIF_THREAD_PRIO 1
-#endif
-
-/**
- * PPP_THREAD_NAME: The name assigned to the pppInputThread.
- */
-#ifndef PPP_THREAD_NAME
-#define PPP_THREAD_NAME "pppInputThread"
-#endif
-
-/**
- * PPP_THREAD_STACKSIZE: The stack size used by the pppInputThread.
- * The stack size value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef PPP_THREAD_STACKSIZE
-#define PPP_THREAD_STACKSIZE 0
-#endif
-
-/**
- * PPP_THREAD_PRIO: The priority assigned to the pppInputThread.
- * The priority value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef PPP_THREAD_PRIO
-#define PPP_THREAD_PRIO 1
-#endif
-
-/**
- * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread.
- */
-#ifndef DEFAULT_THREAD_NAME
-#define DEFAULT_THREAD_NAME "lwIP"
-#endif
-
-/**
- * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread.
- * The stack size value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef DEFAULT_THREAD_STACKSIZE
-#define DEFAULT_THREAD_STACKSIZE 0
-#endif
-
-/**
- * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread.
- * The priority value itself is platform-dependent, but is passed to
- * sys_thread_new() when the thread is created.
- */
-#ifndef DEFAULT_THREAD_PRIO
-#define DEFAULT_THREAD_PRIO 1
-#endif
-
-/**
- * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a
- * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed
- * to sys_mbox_new() when the recvmbox is created.
- */
-#ifndef DEFAULT_RAW_RECVMBOX_SIZE
-#define DEFAULT_RAW_RECVMBOX_SIZE 0
-#endif
-
-/**
- * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a
- * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed
- * to sys_mbox_new() when the recvmbox is created.
- */
-#ifndef DEFAULT_UDP_RECVMBOX_SIZE
-#define DEFAULT_UDP_RECVMBOX_SIZE 0
-#endif
-
-/**
- * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a
- * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed
- * to sys_mbox_new() when the recvmbox is created.
- */
-#ifndef DEFAULT_TCP_RECVMBOX_SIZE
-#define DEFAULT_TCP_RECVMBOX_SIZE 0
-#endif
-
-/**
- * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections.
- * The queue size value itself is platform-dependent, but is passed to
- * sys_mbox_new() when the acceptmbox is created.
- */
-#ifndef DEFAULT_ACCEPTMBOX_SIZE
-#define DEFAULT_ACCEPTMBOX_SIZE 0
-#endif
-
-/*
- ----------------------------------------------
- ---------- Sequential layer options ----------
- ----------------------------------------------
-*/
-/**
- * LWIP_TCPIP_CORE_LOCKING: (EXPERIMENTAL!)
- * Don't use it if you're not an active lwIP project member
- */
-#ifndef LWIP_TCPIP_CORE_LOCKING
-#define LWIP_TCPIP_CORE_LOCKING 0
-#endif
-
-/**
- * LWIP_TCPIP_CORE_LOCKING_INPUT: (EXPERIMENTAL!)
- * Don't use it if you're not an active lwIP project member
- */
-#ifndef LWIP_TCPIP_CORE_LOCKING_INPUT
-#define LWIP_TCPIP_CORE_LOCKING_INPUT 0
-#endif
-
-/**
- * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
- */
-#ifndef LWIP_NETCONN
-#define LWIP_NETCONN 1
-#endif
-
-/** LWIP_TCPIP_TIMEOUT==1: Enable tcpip_timeout/tcpip_untimeout tod create
- * timers running in tcpip_thread from another thread.
- */
-#ifndef LWIP_TCPIP_TIMEOUT
-#define LWIP_TCPIP_TIMEOUT 1
-#endif
-
-/*
- ------------------------------------
- ---------- Socket options ----------
- ------------------------------------
-*/
-/**
- * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
- */
-#ifndef LWIP_SOCKET
-#define LWIP_SOCKET 1
-#endif
-
-/**
- * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names.
- * (only used if you use sockets.c)
- */
-#ifndef LWIP_COMPAT_SOCKETS
-#define LWIP_COMPAT_SOCKETS 1
-#endif
-
-/**
- * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names.
- * Disable this option if you use a POSIX operating system that uses the same
- * names (read, write & close). (only used if you use sockets.c)
- */
-#ifndef LWIP_POSIX_SOCKETS_IO_NAMES
-#define LWIP_POSIX_SOCKETS_IO_NAMES 1
-#endif
-
-/**
- * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT
- * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set
- * in seconds. (does not require sockets.c, and will affect tcp.c)
- */
-#ifndef LWIP_TCP_KEEPALIVE
-#define LWIP_TCP_KEEPALIVE 0
-#endif
-
-/**
- * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing.
- */
-#ifndef LWIP_SO_RCVTIMEO
-#define LWIP_SO_RCVTIMEO 0
-#endif
-
-/**
- * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing.
- */
-#ifndef LWIP_SO_RCVBUF
-#define LWIP_SO_RCVBUF 0
-#endif
-
-/**
- * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize.
- */
-#ifndef RECV_BUFSIZE_DEFAULT
-#define RECV_BUFSIZE_DEFAULT INT_MAX
-#endif
-
-/**
- * SO_REUSE==1: Enable SO_REUSEADDR option.
- */
-#ifndef SO_REUSE
-#define SO_REUSE 0
-#endif
-
-/**
- * SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets
- * to all local matches if SO_REUSEADDR is turned on.
- * WARNING: Adds a memcpy for every packet if passing to more than one pcb!
- */
-#ifndef SO_REUSE_RXTOALL
-#define SO_REUSE_RXTOALL 0
-#endif
-
-/*
- ----------------------------------------
- ---------- Statistics options ----------
- ----------------------------------------
-*/
-/**
- * LWIP_STATS==1: Enable statistics collection in lwip_stats.
- */
-#ifndef LWIP_STATS
-#define LWIP_STATS 1
-#endif
-
-#if LWIP_STATS
-
-/**
- * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions.
- */
-#ifndef LWIP_STATS_DISPLAY
-#define LWIP_STATS_DISPLAY 0
-#endif
-
-/**
- * LINK_STATS==1: Enable link stats.
- */
-#ifndef LINK_STATS
-#define LINK_STATS 1
-#endif
-
-/**
- * ETHARP_STATS==1: Enable etharp stats.
- */
-#ifndef ETHARP_STATS
-#define ETHARP_STATS (LWIP_ARP)
-#endif
-
-/**
- * IP_STATS==1: Enable IP stats.
- */
-#ifndef IP_STATS
-#define IP_STATS 1
-#endif
-
-/**
- * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is
- * on if using either frag or reass.
- */
-#ifndef IPFRAG_STATS
-#define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG)
-#endif
-
-/**
- * ICMP_STATS==1: Enable ICMP stats.
- */
-#ifndef ICMP_STATS
-#define ICMP_STATS 1
-#endif
-
-/**
- * IGMP_STATS==1: Enable IGMP stats.
- */
-#ifndef IGMP_STATS
-#define IGMP_STATS (LWIP_IGMP)
-#endif
-
-/**
- * UDP_STATS==1: Enable UDP stats. Default is on if
- * UDP enabled, otherwise off.
- */
-#ifndef UDP_STATS
-#define UDP_STATS (LWIP_UDP)
-#endif
-
-/**
- * TCP_STATS==1: Enable TCP stats. Default is on if TCP
- * enabled, otherwise off.
- */
-#ifndef TCP_STATS
-#define TCP_STATS (LWIP_TCP)
-#endif
-
-/**
- * MEM_STATS==1: Enable mem.c stats.
- */
-#ifndef MEM_STATS
-#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0))
-#endif
-
-/**
- * MEMP_STATS==1: Enable memp.c pool stats.
- */
-#ifndef MEMP_STATS
-#define MEMP_STATS (MEMP_MEM_MALLOC == 0)
-#endif
-
-/**
- * SYS_STATS==1: Enable system stats (sem and mbox counts, etc).
- */
-#ifndef SYS_STATS
-#define SYS_STATS (NO_SYS == 0)
-#endif
-
-#else
-
-#define LINK_STATS 0
-#define IP_STATS 0
-#define IPFRAG_STATS 0
-#define ICMP_STATS 0
-#define IGMP_STATS 0
-#define UDP_STATS 0
-#define TCP_STATS 0
-#define MEM_STATS 0
-#define MEMP_STATS 0
-#define SYS_STATS 0
-#define LWIP_STATS_DISPLAY 0
-
-#endif /* LWIP_STATS */
-
-/*
- ---------------------------------
- ---------- PPP options ----------
- ---------------------------------
-*/
-/**
- * PPP_SUPPORT==1: Enable PPP.
- */
-#ifndef PPP_SUPPORT
-#define PPP_SUPPORT 0
-#endif
-
-/**
- * PPPOE_SUPPORT==1: Enable PPP Over Ethernet
- */
-#ifndef PPPOE_SUPPORT
-#define PPPOE_SUPPORT 0
-#endif
-
-/**
- * PPPOS_SUPPORT==1: Enable PPP Over Serial
- */
-#ifndef PPPOS_SUPPORT
-#define PPPOS_SUPPORT PPP_SUPPORT
-#endif
-
-#if PPP_SUPPORT
-
-/**
- * NUM_PPP: Max PPP sessions.
- */
-#ifndef NUM_PPP
-#define NUM_PPP 1
-#endif
-
-/**
- * PAP_SUPPORT==1: Support PAP.
- */
-#ifndef PAP_SUPPORT
-#define PAP_SUPPORT 0
-#endif
-
-/**
- * CHAP_SUPPORT==1: Support CHAP.
- */
-#ifndef CHAP_SUPPORT
-#define CHAP_SUPPORT 0
-#endif
-
-/**
- * MSCHAP_SUPPORT==1: Support MSCHAP. CURRENTLY NOT SUPPORTED! DO NOT SET!
- */
-#ifndef MSCHAP_SUPPORT
-#define MSCHAP_SUPPORT 0
-#endif
-
-/**
- * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET!
- */
-#ifndef CBCP_SUPPORT
-#define CBCP_SUPPORT 0
-#endif
-
-/**
- * CCP_SUPPORT==1: Support CCP. CURRENTLY NOT SUPPORTED! DO NOT SET!
- */
-#ifndef CCP_SUPPORT
-#define CCP_SUPPORT 0
-#endif
-
-/**
- * VJ_SUPPORT==1: Support VJ header compression.
- */
-#ifndef VJ_SUPPORT
-#define VJ_SUPPORT 0
-#endif
-
-/**
- * MD5_SUPPORT==1: Support MD5 (see also CHAP).
- */
-#ifndef MD5_SUPPORT
-#define MD5_SUPPORT 0
-#endif
-
-/*
- * Timeouts
- */
-#ifndef FSM_DEFTIMEOUT
-#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */
-#endif
-
-#ifndef FSM_DEFMAXTERMREQS
-#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
-#endif
-
-#ifndef FSM_DEFMAXCONFREQS
-#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
-#endif
-
-#ifndef FSM_DEFMAXNAKLOOPS
-#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
-#endif
-
-#ifndef UPAP_DEFTIMEOUT
-#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */
-#endif
-
-#ifndef UPAP_DEFREQTIME
-#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
-#endif
-
-#ifndef CHAP_DEFTIMEOUT
-#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */
-#endif
-
-#ifndef CHAP_DEFTRANSMITS
-#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */
-#endif
-
-/* Interval in seconds between keepalive echo requests, 0 to disable. */
-#ifndef LCP_ECHOINTERVAL
-#define LCP_ECHOINTERVAL 0
-#endif
-
-/* Number of unanswered echo requests before failure. */
-#ifndef LCP_MAXECHOFAILS
-#define LCP_MAXECHOFAILS 3
-#endif
-
-/* Max Xmit idle time (in jiffies) before resend flag char. */
-#ifndef PPP_MAXIDLEFLAG
-#define PPP_MAXIDLEFLAG 100
-#endif
-
-/*
- * Packet sizes
- *
- * Note - lcp shouldn't be allowed to negotiate stuff outside these
- * limits. See lcp.h in the pppd directory.
- * (XXX - these constants should simply be shared by lcp.c instead
- * of living in lcp.h)
- */
-#define PPP_MTU 1500 /* Default MTU (size of Info field) */
-#ifndef PPP_MAXMTU
-/* #define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) */
-#define PPP_MAXMTU 1500 /* Largest MTU we allow */
-#endif
-#define PPP_MINMTU 64
-#define PPP_MRU 1500 /* default MRU = max length of info field */
-#define PPP_MAXMRU 1500 /* Largest MRU we allow */
-#ifndef PPP_DEFMRU
-#define PPP_DEFMRU 296 /* Try for this */
-#endif
-#define PPP_MINMRU 128 /* No MRUs below this */
-
-#ifndef MAXNAMELEN
-#define MAXNAMELEN 256 /* max length of hostname or name for auth */
-#endif
-#ifndef MAXSECRETLEN
-#define MAXSECRETLEN 256 /* max length of password or secret */
-#endif
-
-#endif /* PPP_SUPPORT */
-
-/*
- --------------------------------------
- ---------- Checksum options ----------
- --------------------------------------
-*/
-/**
- * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.
- */
-#ifndef CHECKSUM_GEN_IP
-#define CHECKSUM_GEN_IP 1
-#endif
-
-/**
- * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.
- */
-#ifndef CHECKSUM_GEN_UDP
-#define CHECKSUM_GEN_UDP 1
-#endif
-
-/**
- * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.
- */
-#ifndef CHECKSUM_GEN_TCP
-#define CHECKSUM_GEN_TCP 1
-#endif
-
-/**
- * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.
- */
-#ifndef CHECKSUM_CHECK_IP
-#define CHECKSUM_CHECK_IP 1
-#endif
-
-/**
- * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.
- */
-#ifndef CHECKSUM_CHECK_UDP
-#define CHECKSUM_CHECK_UDP 1
-#endif
-
-/**
- * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.
- */
-#ifndef CHECKSUM_CHECK_TCP
-#define CHECKSUM_CHECK_TCP 1
-#endif
-
-/**
- * LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from
- * application buffers to pbufs.
- */
-#ifndef LWIP_CHECKSUM_ON_COPY
-#define LWIP_CHECKSUM_ON_COPY 0
-#endif
-
-/*
- ---------------------------------------
- ---------- Debugging options ----------
- ---------------------------------------
-*/
-/**
- * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is
- * compared against this value. If it is smaller, then debugging
- * messages are written.
- */
-#ifndef LWIP_DBG_MIN_LEVEL
-#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL
-#endif
-
-/**
- * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable
- * debug messages of certain types.
- */
-#ifndef LWIP_DBG_TYPES_ON
-#define LWIP_DBG_TYPES_ON LWIP_DBG_ON
-#endif
-
-/**
- * ETHARP_DEBUG: Enable debugging in etharp.c.
- */
-#ifndef ETHARP_DEBUG
-#define ETHARP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * NETIF_DEBUG: Enable debugging in netif.c.
- */
-#ifndef NETIF_DEBUG
-#define NETIF_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * PBUF_DEBUG: Enable debugging in pbuf.c.
- */
-#ifndef PBUF_DEBUG
-#define PBUF_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * API_LIB_DEBUG: Enable debugging in api_lib.c.
- */
-#ifndef API_LIB_DEBUG
-#define API_LIB_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * API_MSG_DEBUG: Enable debugging in api_msg.c.
- */
-#ifndef API_MSG_DEBUG
-#define API_MSG_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * SOCKETS_DEBUG: Enable debugging in sockets.c.
- */
-#ifndef SOCKETS_DEBUG
-#define SOCKETS_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * ICMP_DEBUG: Enable debugging in icmp.c.
- */
-#ifndef ICMP_DEBUG
-#define ICMP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * IGMP_DEBUG: Enable debugging in igmp.c.
- */
-#ifndef IGMP_DEBUG
-#define IGMP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * INET_DEBUG: Enable debugging in inet.c.
- */
-#ifndef INET_DEBUG
-#define INET_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * IP_DEBUG: Enable debugging for IP.
- */
-#ifndef IP_DEBUG
-#define IP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass.
- */
-#ifndef IP_REASS_DEBUG
-#define IP_REASS_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * RAW_DEBUG: Enable debugging in raw.c.
- */
-#ifndef RAW_DEBUG
-#define RAW_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * MEM_DEBUG: Enable debugging in mem.c.
- */
-#ifndef MEM_DEBUG
-#define MEM_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * MEMP_DEBUG: Enable debugging in memp.c.
- */
-#ifndef MEMP_DEBUG
-#define MEMP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * SYS_DEBUG: Enable debugging in sys.c.
- */
-#ifndef SYS_DEBUG
-#define SYS_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TIMERS_DEBUG: Enable debugging in timers.c.
- */
-#ifndef TIMERS_DEBUG
-#define TIMERS_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_DEBUG: Enable debugging for TCP.
- */
-#ifndef TCP_DEBUG
-#define TCP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug.
- */
-#ifndef TCP_INPUT_DEBUG
-#define TCP_INPUT_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit.
- */
-#ifndef TCP_FR_DEBUG
-#define TCP_FR_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit
- * timeout.
- */
-#ifndef TCP_RTO_DEBUG
-#define TCP_RTO_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_CWND_DEBUG: Enable debugging for TCP congestion window.
- */
-#ifndef TCP_CWND_DEBUG
-#define TCP_CWND_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating.
- */
-#ifndef TCP_WND_DEBUG
-#define TCP_WND_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions.
- */
-#ifndef TCP_OUTPUT_DEBUG
-#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_RST_DEBUG: Enable debugging for TCP with the RST message.
- */
-#ifndef TCP_RST_DEBUG
-#define TCP_RST_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths.
- */
-#ifndef TCP_QLEN_DEBUG
-#define TCP_QLEN_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * UDP_DEBUG: Enable debugging in UDP.
- */
-#ifndef UDP_DEBUG
-#define UDP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * TCPIP_DEBUG: Enable debugging in tcpip.c.
- */
-#ifndef TCPIP_DEBUG
-#define TCPIP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * PPP_DEBUG: Enable debugging for PPP.
- */
-#ifndef PPP_DEBUG
-#define PPP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * SLIP_DEBUG: Enable debugging in slipif.c.
- */
-#ifndef SLIP_DEBUG
-#define SLIP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * DHCP_DEBUG: Enable debugging in dhcp.c.
- */
-#ifndef DHCP_DEBUG
-#define DHCP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * AUTOIP_DEBUG: Enable debugging in autoip.c.
- */
-#ifndef AUTOIP_DEBUG
-#define AUTOIP_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * SNMP_MSG_DEBUG: Enable debugging for SNMP messages.
- */
-#ifndef SNMP_MSG_DEBUG
-#define SNMP_MSG_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs.
- */
-#ifndef SNMP_MIB_DEBUG
-#define SNMP_MIB_DEBUG LWIP_DBG_OFF
-#endif
-
-/**
- * DNS_DEBUG: Enable debugging for DNS.
- */
-#ifndef DNS_DEBUG
-#define DNS_DEBUG LWIP_DBG_OFF
-#endif
-
-#endif /* __LWIP_OPT_H__ */
--- a/LPC2368/lwip/include/lwip/pbuf.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
- * 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 __LWIP_PBUF_H__
-#define __LWIP_PBUF_H__
-
-#include "lwip/opt.h"
-#include "lwip/err.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Currently, the pbuf_custom code is only needed for one specific configuration
- * of IP_FRAG */
-#define LWIP_SUPPORT_CUSTOM_PBUF (IP_FRAG && !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF)
-
-#define PBUF_TRANSPORT_HLEN 20
-#define PBUF_IP_HLEN 20
-
-typedef enum {
- PBUF_TRANSPORT,
- PBUF_IP,
- PBUF_LINK,
- PBUF_RAW
-} pbuf_layer;
-
-typedef enum {
- PBUF_RAM, /* pbuf data is stored in RAM */
- PBUF_ROM, /* pbuf data is stored in ROM */
- PBUF_REF, /* pbuf comes from the pbuf pool */
- PBUF_POOL /* pbuf payload refers to RAM */
-} pbuf_type;
-
-
-/* indicates this packet's data should be immediately passed to the application */
-#define PBUF_FLAG_PUSH 0x01U
-/* indicates this is a custom pbuf: pbuf_free and pbuf_header handle such a
- a pbuf differently */
-#define PBUF_FLAG_IS_CUSTOM 0x02U
-/* indicates this pbuf is UDP multicast to be looped back */
-#define PBUF_FLAG_MCASTLOOP 0x04U
-
-struct pbuf {
- /* next pbuf in singly linked pbuf chain */
- struct pbuf *next;
-
- /* pointer to the actual data in the buffer */
- void *payload;
-
- /**
- * total length of this buffer and all next buffers in chain
- * belonging to the same packet.
- *
- * For non-queue packet chains this is the invariant:
- * p->tot_len == p->len + (p->next? p->next->tot_len: 0)
- */
- u16_t tot_len;
-
- /* length of this buffer */
- u16_t len;
-
- /* pbuf_type as u8_t instead of enum to save space */
- u8_t /*pbuf_type*/ type;
-
- /* misc flags */
- u8_t flags;
-
- /**
- * the reference count always equals the number of pointers
- * that refer to this pbuf. This can be pointers from an application,
- * the stack itself, or pbuf->next pointers from a chain.
- */
- u16_t ref;
-};
-
-#if LWIP_SUPPORT_CUSTOM_PBUF
-/* Prototype for a function to free a custom pbuf */
-typedef void (*pbuf_free_custom_fn)(struct pbuf *p);
-
-/* A custom pbuf: like a pbuf, but following a function pointer to free it. */
-struct pbuf_custom {
- /* The actual pbuf */
- struct pbuf pbuf;
- /* This function is called when pbuf_free deallocates this pbuf(_custom) */
- pbuf_free_custom_fn custom_free_function;
-};
-#endif /* LWIP_SUPPORT_CUSTOM_PBUF */
-
-/* Initializes the pbuf module. This call is empty for now, but may not be in future. */
-#define pbuf_init()
-
-struct pbuf *pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type);
-#if LWIP_SUPPORT_CUSTOM_PBUF
-struct pbuf *pbuf_alloced_custom(pbuf_layer l, u16_t length, pbuf_type type,
- struct pbuf_custom *p, void *payload_mem,
- u16_t payload_mem_len);
-#endif /* LWIP_SUPPORT_CUSTOM_PBUF */
-void pbuf_realloc(struct pbuf *p, u16_t size);
-u8_t pbuf_header(struct pbuf *p, s16_t header_size);
-void pbuf_ref(struct pbuf *p);
-u8_t pbuf_free(struct pbuf *p);
-u8_t pbuf_clen(struct pbuf *p);
-void pbuf_cat(struct pbuf *head, struct pbuf *tail);
-void pbuf_chain(struct pbuf *head, struct pbuf *tail);
-struct pbuf *pbuf_dechain(struct pbuf *p);
-err_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from);
-u16_t pbuf_copy_partial(struct pbuf *p, void *dataptr, u16_t len, u16_t offset);
-err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len);
-struct pbuf *pbuf_coalesce(struct pbuf *p, pbuf_layer layer);
-#if LWIP_CHECKSUM_ON_COPY
-err_t pbuf_fill_chksum(struct pbuf *p, u16_t start_offset, const void *dataptr,
- u16_t len, u16_t *chksum);
-#endif /* LWIP_CHECKSUM_ON_COPY */
-
-u8_t pbuf_get_at(struct pbuf* p, u16_t offset);
-u16_t pbuf_memcmp(struct pbuf* p, u16_t offset, const void* s2, u16_t n);
-u16_t pbuf_memfind(struct pbuf* p, const void* mem, u16_t mem_len, u16_t start_offset);
-u16_t pbuf_strstr(struct pbuf* p, const char* substr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_PBUF_H__ */
--- a/LPC2368/lwip/include/lwip/raw.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * 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 __LWIP_RAW_H__
-#define __LWIP_RAW_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/pbuf.h"
-#include "lwip/def.h"
-#include "lwip/ip.h"
-#include "lwip/ip_addr.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct raw_pcb;
-
-/** Function prototype for raw pcb receive callback functions.
- * @param arg user supplied argument (raw_pcb.recv_arg)
- * @param pcb the raw_pcb which received data
- * @param p the packet buffer that was received
- * @param addr the remote IP address from which the packet was received
- * @return 1 if the packet was 'eaten' (aka. deleted),
- * 0 if the packet lives on
- * If returning 1, the callback is responsible for freeing the pbuf
- * if it's not used any more.
- */
-typedef u8_t (*raw_recv_fn)(void *arg, struct raw_pcb *pcb, struct pbuf *p,
- ip_addr_t *addr);
-
-struct raw_pcb {
- /* Common members of all PCB types */
- IP_PCB;
-
- struct raw_pcb *next;
-
- u8_t protocol;
-
- /** receive callback function */
- raw_recv_fn recv;
- /* user-supplied argument for the recv callback */
- void *recv_arg;
-};
-
-/* The following functions is the application layer interface to the
- RAW code. */
-struct raw_pcb * raw_new (u8_t proto);
-void raw_remove (struct raw_pcb *pcb);
-err_t raw_bind (struct raw_pcb *pcb, ip_addr_t *ipaddr);
-err_t raw_connect (struct raw_pcb *pcb, ip_addr_t *ipaddr);
-
-void raw_recv (struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg);
-err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, ip_addr_t *ipaddr);
-err_t raw_send (struct raw_pcb *pcb, struct pbuf *p);
-
-/* The following functions are the lower layer interface to RAW. */
-u8_t raw_input (struct pbuf *p, struct netif *inp);
-#define raw_init() /* Compatibility define, not init needed. */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_RAW */
-
-#endif /* __LWIP_RAW_H__ */
--- a/LPC2368/lwip/include/lwip/sio.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * 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.
- */
-
-/*
- * This is the interface to the platform specific serial IO module
- * It needs to be implemented by those platforms which need SLIP or PPP
- */
-
-#ifndef __SIO_H__
-#define __SIO_H__
-
-#include "lwip/arch.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* If you want to define sio_fd_t elsewhere or differently,
- define this in your cc.h file. */
-#ifndef __sio_fd_t_defined
-typedef void * sio_fd_t;
-#endif
-
-/* The following functions can be defined to something else in your cc.h file
- or be implemented in your custom sio.c file. */
-
-#ifndef sio_open
-/**
- * Opens a serial device for communication.
- *
- * @param devnum device number
- * @return handle to serial device if successful, NULL otherwise
- */
-sio_fd_t sio_open(u8_t devnum);
-#endif
-
-#ifndef sio_send
-/**
- * Sends a single character to the serial device.
- *
- * @param c character to send
- * @param fd serial device handle
- *
- * @note This function will block until the character can be sent.
- */
-void sio_send(u8_t c, sio_fd_t fd);
-#endif
-
-#ifndef sio_recv
-/**
- * Receives a single character from the serial device.
- *
- * @param fd serial device handle
- *
- * @note This function will block until a character is received.
- */
-u8_t sio_recv(sio_fd_t fd);
-#endif
-
-#ifndef sio_read
-/**
- * Reads from the serial device.
- *
- * @param fd serial device handle
- * @param data pointer to data buffer for receiving
- * @param len maximum length (in bytes) of data to receive
- * @return number of bytes actually received - may be 0 if aborted by sio_read_abort
- *
- * @note This function will block until data can be received. The blocking
- * can be cancelled by calling sio_read_abort().
- */
-u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len);
-#endif
-
-#ifndef sio_tryread
-/**
- * Tries to read from the serial device. Same as sio_read but returns
- * immediately if no data is available and never blocks.
- *
- * @param fd serial device handle
- * @param data pointer to data buffer for receiving
- * @param len maximum length (in bytes) of data to receive
- * @return number of bytes actually received
- */
-u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len);
-#endif
-
-#ifndef sio_write
-/**
- * Writes to the serial device.
- *
- * @param fd serial device handle
- * @param data pointer to data to send
- * @param len length (in bytes) of data to send
- * @return number of bytes actually sent
- *
- * @note This function will block until all data can be sent.
- */
-u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len);
-#endif
-
-#ifndef sio_read_abort
-/**
- * Aborts a blocking sio_read() call.
- *
- * @param fd serial device handle
- */
-void sio_read_abort(sio_fd_t fd);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __SIO_H__ */
--- a/LPC2368/lwip/include/lwip/snmp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-/*
- * Copyright (c) 2001, 2002 Leon Woestenberg <leon.woestenberg@axon.tv>
- * Copyright (c) 2001, 2002 Axon Digital Design B.V., The Netherlands.
- * 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: Leon Woestenberg <leon.woestenberg@axon.tv>
- *
- */
-#ifndef __LWIP_SNMP_H__
-#define __LWIP_SNMP_H__
-
-#include "lwip/opt.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "lwip/ip_addr.h"
-
-struct udp_pcb;
-struct netif;
-
-/**
- * @see RFC1213, "MIB-II, 6. Definitions"
- */
-enum snmp_ifType {
- snmp_ifType_other=1, /* none of the following */
- snmp_ifType_regular1822,
- snmp_ifType_hdh1822,
- snmp_ifType_ddn_x25,
- snmp_ifType_rfc877_x25,
- snmp_ifType_ethernet_csmacd,
- snmp_ifType_iso88023_csmacd,
- snmp_ifType_iso88024_tokenBus,
- snmp_ifType_iso88025_tokenRing,
- snmp_ifType_iso88026_man,
- snmp_ifType_starLan,
- snmp_ifType_proteon_10Mbit,
- snmp_ifType_proteon_80Mbit,
- snmp_ifType_hyperchannel,
- snmp_ifType_fddi,
- snmp_ifType_lapb,
- snmp_ifType_sdlc,
- snmp_ifType_ds1, /* T-1 */
- snmp_ifType_e1, /* european equiv. of T-1 */
- snmp_ifType_basicISDN,
- snmp_ifType_primaryISDN, /* proprietary serial */
- snmp_ifType_propPointToPointSerial,
- snmp_ifType_ppp,
- snmp_ifType_softwareLoopback,
- snmp_ifType_eon, /* CLNP over IP [11] */
- snmp_ifType_ethernet_3Mbit,
- snmp_ifType_nsip, /* XNS over IP */
- snmp_ifType_slip, /* generic SLIP */
- snmp_ifType_ultra, /* ULTRA technologies */
- snmp_ifType_ds3, /* T-3 */
- snmp_ifType_sip, /* SMDS */
- snmp_ifType_frame_relay
-};
-
-#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
-
-/** SNMP "sysuptime" Interval */
-#define SNMP_SYSUPTIME_INTERVAL 10
-
-/** fixed maximum length for object identifier type */
-#define LWIP_SNMP_OBJ_ID_LEN 32
-
-/** internal object identifier representation */
-struct snmp_obj_id
-{
- u8_t len;
- s32_t id[LWIP_SNMP_OBJ_ID_LEN];
-};
-
-/* system */
-void snmp_set_sysdesr(u8_t* str, u8_t* len);
-void snmp_set_sysobjid(struct snmp_obj_id *oid);
-void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid);
-void snmp_inc_sysuptime(void);
-void snmp_add_sysuptime(u32_t value);
-void snmp_get_sysuptime(u32_t *value);
-void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen);
-void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen);
-void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen);
-
-/* network interface */
-void snmp_add_ifinoctets(struct netif *ni, u32_t value);
-void snmp_inc_ifinucastpkts(struct netif *ni);
-void snmp_inc_ifinnucastpkts(struct netif *ni);
-void snmp_inc_ifindiscards(struct netif *ni);
-void snmp_add_ifoutoctets(struct netif *ni, u32_t value);
-void snmp_inc_ifoutucastpkts(struct netif *ni);
-void snmp_inc_ifoutnucastpkts(struct netif *ni);
-void snmp_inc_ifoutdiscards(struct netif *ni);
-void snmp_inc_iflist(void);
-void snmp_dec_iflist(void);
-
-/* ARP (for atTable and ipNetToMediaTable) */
-void snmp_insert_arpidx_tree(struct netif *ni, ip_addr_t *ip);
-void snmp_delete_arpidx_tree(struct netif *ni, ip_addr_t *ip);
-
-/* IP */
-void snmp_inc_ipinreceives(void);
-void snmp_inc_ipinhdrerrors(void);
-void snmp_inc_ipinaddrerrors(void);
-void snmp_inc_ipforwdatagrams(void);
-void snmp_inc_ipinunknownprotos(void);
-void snmp_inc_ipindiscards(void);
-void snmp_inc_ipindelivers(void);
-void snmp_inc_ipoutrequests(void);
-void snmp_inc_ipoutdiscards(void);
-void snmp_inc_ipoutnoroutes(void);
-void snmp_inc_ipreasmreqds(void);
-void snmp_inc_ipreasmoks(void);
-void snmp_inc_ipreasmfails(void);
-void snmp_inc_ipfragoks(void);
-void snmp_inc_ipfragfails(void);
-void snmp_inc_ipfragcreates(void);
-void snmp_inc_iproutingdiscards(void);
-void snmp_insert_ipaddridx_tree(struct netif *ni);
-void snmp_delete_ipaddridx_tree(struct netif *ni);
-void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni);
-void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni);
-
-/* ICMP */
-void snmp_inc_icmpinmsgs(void);
-void snmp_inc_icmpinerrors(void);
-void snmp_inc_icmpindestunreachs(void);
-void snmp_inc_icmpintimeexcds(void);
-void snmp_inc_icmpinparmprobs(void);
-void snmp_inc_icmpinsrcquenchs(void);
-void snmp_inc_icmpinredirects(void);
-void snmp_inc_icmpinechos(void);
-void snmp_inc_icmpinechoreps(void);
-void snmp_inc_icmpintimestamps(void);
-void snmp_inc_icmpintimestampreps(void);
-void snmp_inc_icmpinaddrmasks(void);
-void snmp_inc_icmpinaddrmaskreps(void);
-void snmp_inc_icmpoutmsgs(void);
-void snmp_inc_icmpouterrors(void);
-void snmp_inc_icmpoutdestunreachs(void);
-void snmp_inc_icmpouttimeexcds(void);
-void snmp_inc_icmpoutparmprobs(void);
-void snmp_inc_icmpoutsrcquenchs(void);
-void snmp_inc_icmpoutredirects(void);
-void snmp_inc_icmpoutechos(void);
-void snmp_inc_icmpoutechoreps(void);
-void snmp_inc_icmpouttimestamps(void);
-void snmp_inc_icmpouttimestampreps(void);
-void snmp_inc_icmpoutaddrmasks(void);
-void snmp_inc_icmpoutaddrmaskreps(void);
-
-/* TCP */
-void snmp_inc_tcpactiveopens(void);
-void snmp_inc_tcppassiveopens(void);
-void snmp_inc_tcpattemptfails(void);
-void snmp_inc_tcpestabresets(void);
-void snmp_inc_tcpinsegs(void);
-void snmp_inc_tcpoutsegs(void);
-void snmp_inc_tcpretranssegs(void);
-void snmp_inc_tcpinerrs(void);
-void snmp_inc_tcpoutrsts(void);
-
-/* UDP */
-void snmp_inc_udpindatagrams(void);
-void snmp_inc_udpnoports(void);
-void snmp_inc_udpinerrors(void);
-void snmp_inc_udpoutdatagrams(void);
-void snmp_insert_udpidx_tree(struct udp_pcb *pcb);
-void snmp_delete_udpidx_tree(struct udp_pcb *pcb);
-
-/* SNMP */
-void snmp_inc_snmpinpkts(void);
-void snmp_inc_snmpoutpkts(void);
-void snmp_inc_snmpinbadversions(void);
-void snmp_inc_snmpinbadcommunitynames(void);
-void snmp_inc_snmpinbadcommunityuses(void);
-void snmp_inc_snmpinasnparseerrs(void);
-void snmp_inc_snmpintoobigs(void);
-void snmp_inc_snmpinnosuchnames(void);
-void snmp_inc_snmpinbadvalues(void);
-void snmp_inc_snmpinreadonlys(void);
-void snmp_inc_snmpingenerrs(void);
-void snmp_add_snmpintotalreqvars(u8_t value);
-void snmp_add_snmpintotalsetvars(u8_t value);
-void snmp_inc_snmpingetrequests(void);
-void snmp_inc_snmpingetnexts(void);
-void snmp_inc_snmpinsetrequests(void);
-void snmp_inc_snmpingetresponses(void);
-void snmp_inc_snmpintraps(void);
-void snmp_inc_snmpouttoobigs(void);
-void snmp_inc_snmpoutnosuchnames(void);
-void snmp_inc_snmpoutbadvalues(void);
-void snmp_inc_snmpoutgenerrs(void);
-void snmp_inc_snmpoutgetrequests(void);
-void snmp_inc_snmpoutgetnexts(void);
-void snmp_inc_snmpoutsetrequests(void);
-void snmp_inc_snmpoutgetresponses(void);
-void snmp_inc_snmpouttraps(void);
-void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid);
-void snmp_set_snmpenableauthentraps(u8_t *value);
-void snmp_get_snmpenableauthentraps(u8_t *value);
-
-/* LWIP_SNMP support not available */
-/* define everything to be empty */
-#else
-
-/* system */
-#define snmp_set_sysdesr(str, len)
-#define snmp_set_sysobjid(oid);
-#define snmp_get_sysobjid_ptr(oid)
-#define snmp_inc_sysuptime()
-#define snmp_add_sysuptime(value)
-#define snmp_get_sysuptime(value)
-#define snmp_set_syscontact(ocstr, ocstrlen);
-#define snmp_set_sysname(ocstr, ocstrlen);
-#define snmp_set_syslocation(ocstr, ocstrlen);
-
-/* network interface */
-#define snmp_add_ifinoctets(ni,value)
-#define snmp_inc_ifinucastpkts(ni)
-#define snmp_inc_ifinnucastpkts(ni)
-#define snmp_inc_ifindiscards(ni)
-#define snmp_add_ifoutoctets(ni,value)
-#define snmp_inc_ifoutucastpkts(ni)
-#define snmp_inc_ifoutnucastpkts(ni)
-#define snmp_inc_ifoutdiscards(ni)
-#define snmp_inc_iflist()
-#define snmp_dec_iflist()
-
-/* ARP */
-#define snmp_insert_arpidx_tree(ni,ip)
-#define snmp_delete_arpidx_tree(ni,ip)
-
-/* IP */
-#define snmp_inc_ipinreceives()
-#define snmp_inc_ipinhdrerrors()
-#define snmp_inc_ipinaddrerrors()
-#define snmp_inc_ipforwdatagrams()
-#define snmp_inc_ipinunknownprotos()
-#define snmp_inc_ipindiscards()
-#define snmp_inc_ipindelivers()
-#define snmp_inc_ipoutrequests()
-#define snmp_inc_ipoutdiscards()
-#define snmp_inc_ipoutnoroutes()
-#define snmp_inc_ipreasmreqds()
-#define snmp_inc_ipreasmoks()
-#define snmp_inc_ipreasmfails()
-#define snmp_inc_ipfragoks()
-#define snmp_inc_ipfragfails()
-#define snmp_inc_ipfragcreates()
-#define snmp_inc_iproutingdiscards()
-#define snmp_insert_ipaddridx_tree(ni)
-#define snmp_delete_ipaddridx_tree(ni)
-#define snmp_insert_iprteidx_tree(dflt, ni)
-#define snmp_delete_iprteidx_tree(dflt, ni)
-
-/* ICMP */
-#define snmp_inc_icmpinmsgs()
-#define snmp_inc_icmpinerrors()
-#define snmp_inc_icmpindestunreachs()
-#define snmp_inc_icmpintimeexcds()
-#define snmp_inc_icmpinparmprobs()
-#define snmp_inc_icmpinsrcquenchs()
-#define snmp_inc_icmpinredirects()
-#define snmp_inc_icmpinechos()
-#define snmp_inc_icmpinechoreps()
-#define snmp_inc_icmpintimestamps()
-#define snmp_inc_icmpintimestampreps()
-#define snmp_inc_icmpinaddrmasks()
-#define snmp_inc_icmpinaddrmaskreps()
-#define snmp_inc_icmpoutmsgs()
-#define snmp_inc_icmpouterrors()
-#define snmp_inc_icmpoutdestunreachs()
-#define snmp_inc_icmpouttimeexcds()
-#define snmp_inc_icmpoutparmprobs()
-#define snmp_inc_icmpoutsrcquenchs()
-#define snmp_inc_icmpoutredirects()
-#define snmp_inc_icmpoutechos()
-#define snmp_inc_icmpoutechoreps()
-#define snmp_inc_icmpouttimestamps()
-#define snmp_inc_icmpouttimestampreps()
-#define snmp_inc_icmpoutaddrmasks()
-#define snmp_inc_icmpoutaddrmaskreps()
-/* TCP */
-#define snmp_inc_tcpactiveopens()
-#define snmp_inc_tcppassiveopens()
-#define snmp_inc_tcpattemptfails()
-#define snmp_inc_tcpestabresets()
-#define snmp_inc_tcpinsegs()
-#define snmp_inc_tcpoutsegs()
-#define snmp_inc_tcpretranssegs()
-#define snmp_inc_tcpinerrs()
-#define snmp_inc_tcpoutrsts()
-
-/* UDP */
-#define snmp_inc_udpindatagrams()
-#define snmp_inc_udpnoports()
-#define snmp_inc_udpinerrors()
-#define snmp_inc_udpoutdatagrams()
-#define snmp_insert_udpidx_tree(pcb)
-#define snmp_delete_udpidx_tree(pcb)
-
-/* SNMP */
-#define snmp_inc_snmpinpkts()
-#define snmp_inc_snmpoutpkts()
-#define snmp_inc_snmpinbadversions()
-#define snmp_inc_snmpinbadcommunitynames()
-#define snmp_inc_snmpinbadcommunityuses()
-#define snmp_inc_snmpinasnparseerrs()
-#define snmp_inc_snmpintoobigs()
-#define snmp_inc_snmpinnosuchnames()
-#define snmp_inc_snmpinbadvalues()
-#define snmp_inc_snmpinreadonlys()
-#define snmp_inc_snmpingenerrs()
-#define snmp_add_snmpintotalreqvars(value)
-#define snmp_add_snmpintotalsetvars(value)
-#define snmp_inc_snmpingetrequests()
-#define snmp_inc_snmpingetnexts()
-#define snmp_inc_snmpinsetrequests()
-#define snmp_inc_snmpingetresponses()
-#define snmp_inc_snmpintraps()
-#define snmp_inc_snmpouttoobigs()
-#define snmp_inc_snmpoutnosuchnames()
-#define snmp_inc_snmpoutbadvalues()
-#define snmp_inc_snmpoutgenerrs()
-#define snmp_inc_snmpoutgetrequests()
-#define snmp_inc_snmpoutgetnexts()
-#define snmp_inc_snmpoutsetrequests()
-#define snmp_inc_snmpoutgetresponses()
-#define snmp_inc_snmpouttraps()
-#define snmp_get_snmpgrpid_ptr(oid)
-#define snmp_set_snmpenableauthentraps(value)
-#define snmp_get_snmpenableauthentraps(value)
-
-#endif /* LWIP_SNMP */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_SNMP_H__ */
--- a/LPC2368/lwip/include/lwip/snmp_asn1.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/**
- * @file
- * Abstract Syntax Notation One (ISO 8824, 8825) codec.
- */
-
-/*
- * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands.
- * 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: Christiaan Simons <christiaan.simons@axon.tv>
- */
-
-#ifndef __LWIP_SNMP_ASN1_H__
-#define __LWIP_SNMP_ASN1_H__
-
-#include "lwip/opt.h"
-#include "lwip/err.h"
-#include "lwip/pbuf.h"
-#include "lwip/snmp.h"
-
-#if LWIP_SNMP
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define SNMP_ASN1_UNIV (0) /* (!0x80 | !0x40) */
-#define SNMP_ASN1_APPLIC (0x40) /* (!0x80 | 0x40) */
-#define SNMP_ASN1_CONTXT (0x80) /* ( 0x80 | !0x40) */
-
-#define SNMP_ASN1_CONSTR (0x20) /* ( 0x20) */
-#define SNMP_ASN1_PRIMIT (0) /* (!0x20) */
-
-/* universal tags */
-#define SNMP_ASN1_INTEG 2
-#define SNMP_ASN1_OC_STR 4
-#define SNMP_ASN1_NUL 5
-#define SNMP_ASN1_OBJ_ID 6
-#define SNMP_ASN1_SEQ 16
-
-/* application specific (SNMP) tags */
-#define SNMP_ASN1_IPADDR 0 /* octet string size(4) */
-#define SNMP_ASN1_COUNTER 1 /* u32_t */
-#define SNMP_ASN1_GAUGE 2 /* u32_t */
-#define SNMP_ASN1_TIMETICKS 3 /* u32_t */
-#define SNMP_ASN1_OPAQUE 4 /* octet string */
-
-/* context specific (SNMP) tags */
-#define SNMP_ASN1_PDU_GET_REQ 0
-#define SNMP_ASN1_PDU_GET_NEXT_REQ 1
-#define SNMP_ASN1_PDU_GET_RESP 2
-#define SNMP_ASN1_PDU_SET_REQ 3
-#define SNMP_ASN1_PDU_TRAP 4
-
-err_t snmp_asn1_dec_type(struct pbuf *p, u16_t ofs, u8_t *type);
-err_t snmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length);
-err_t snmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value);
-err_t snmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value);
-err_t snmp_asn1_dec_oid(struct pbuf *p, u16_t ofs, u16_t len, struct snmp_obj_id *oid);
-err_t snmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw);
-
-void snmp_asn1_enc_length_cnt(u16_t length, u8_t *octets_needed);
-void snmp_asn1_enc_u32t_cnt(u32_t value, u16_t *octets_needed);
-void snmp_asn1_enc_s32t_cnt(s32_t value, u16_t *octets_needed);
-void snmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed);
-err_t snmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type);
-err_t snmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length);
-err_t snmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, u32_t value);
-err_t snmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, s32_t value);
-err_t snmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident);
-err_t snmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u16_t raw_len, u8_t *raw);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_SNMP */
-
-#endif /* __LWIP_SNMP_ASN1_H__ */
--- a/LPC2368/lwip/include/lwip/snmp_msg.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
-/**
- * @file
- * SNMP Agent message handling structures.
- */
-
-/*
- * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands.
- * 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: Christiaan Simons <christiaan.simons@axon.tv>
- */
-
-#ifndef __LWIP_SNMP_MSG_H__
-#define __LWIP_SNMP_MSG_H__
-
-#include "lwip/opt.h"
-#include "lwip/snmp.h"
-#include "lwip/snmp_structs.h"
-#include "lwip/ip_addr.h"
-#include "lwip/err.h"
-
-#if LWIP_SNMP
-
-#if SNMP_PRIVATE_MIB
-/* When using a private MIB, you have to create a file 'private_mib.h' that contains
- * a 'struct mib_array_node mib_private' which contains your MIB. */
-#include "private_mib.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The listen port of the SNMP agent. Clients have to make their requests to
- this port. Most standard clients won't work if you change this! */
-#ifndef SNMP_IN_PORT
-#define SNMP_IN_PORT 161
-#endif
-/* The remote port the SNMP agent sends traps to. Most standard trap sinks won't
- work if you change this! */
-#ifndef SNMP_TRAP_PORT
-#define SNMP_TRAP_PORT 162
-#endif
-
-#define SNMP_ES_NOERROR 0
-#define SNMP_ES_TOOBIG 1
-#define SNMP_ES_NOSUCHNAME 2
-#define SNMP_ES_BADVALUE 3
-#define SNMP_ES_READONLY 4
-#define SNMP_ES_GENERROR 5
-
-#define SNMP_GENTRAP_COLDSTART 0
-#define SNMP_GENTRAP_WARMSTART 1
-#define SNMP_GENTRAP_AUTHFAIL 4
-#define SNMP_GENTRAP_ENTERPRISESPC 6
-
-struct snmp_varbind
-{
- /* next pointer, NULL for last in list */
- struct snmp_varbind *next;
- /* previous pointer, NULL for first in list */
- struct snmp_varbind *prev;
-
- /* object identifier length (in s32_t) */
- u8_t ident_len;
- /* object identifier array */
- s32_t *ident;
-
- /* object value ASN1 type */
- u8_t value_type;
- /* object value length (in u8_t) */
- u8_t value_len;
- /* object value */
- void *value;
-
- /* encoding varbind seq length length */
- u8_t seqlenlen;
- /* encoding object identifier length length */
- u8_t olenlen;
- /* encoding object value length length */
- u8_t vlenlen;
- /* encoding varbind seq length */
- u16_t seqlen;
- /* encoding object identifier length */
- u16_t olen;
- /* encoding object value length */
- u16_t vlen;
-};
-
-struct snmp_varbind_root
-{
- struct snmp_varbind *head;
- struct snmp_varbind *tail;
- /* number of variable bindings in list */
- u8_t count;
- /* encoding varbind-list seq length length */
- u8_t seqlenlen;
- /* encoding varbind-list seq length */
- u16_t seqlen;
-};
-
-/** output response message header length fields */
-struct snmp_resp_header_lengths
-{
- /* encoding error-index length length */
- u8_t erridxlenlen;
- /* encoding error-status length length */
- u8_t errstatlenlen;
- /* encoding request id length length */
- u8_t ridlenlen;
- /* encoding pdu length length */
- u8_t pdulenlen;
- /* encoding community length length */
- u8_t comlenlen;
- /* encoding version length length */
- u8_t verlenlen;
- /* encoding sequence length length */
- u8_t seqlenlen;
-
- /* encoding error-index length */
- u16_t erridxlen;
- /* encoding error-status length */
- u16_t errstatlen;
- /* encoding request id length */
- u16_t ridlen;
- /* encoding pdu length */
- u16_t pdulen;
- /* encoding community length */
- u16_t comlen;
- /* encoding version length */
- u16_t verlen;
- /* encoding sequence length */
- u16_t seqlen;
-};
-
-/** output response message header length fields */
-struct snmp_trap_header_lengths
-{
- /* encoding timestamp length length */
- u8_t tslenlen;
- /* encoding specific-trap length length */
- u8_t strplenlen;
- /* encoding generic-trap length length */
- u8_t gtrplenlen;
- /* encoding agent-addr length length */
- u8_t aaddrlenlen;
- /* encoding enterprise-id length length */
- u8_t eidlenlen;
- /* encoding pdu length length */
- u8_t pdulenlen;
- /* encoding community length length */
- u8_t comlenlen;
- /* encoding version length length */
- u8_t verlenlen;
- /* encoding sequence length length */
- u8_t seqlenlen;
-
- /* encoding timestamp length */
- u16_t tslen;
- /* encoding specific-trap length */
- u16_t strplen;
- /* encoding generic-trap length */
- u16_t gtrplen;
- /* encoding agent-addr length */
- u16_t aaddrlen;
- /* encoding enterprise-id length */
- u16_t eidlen;
- /* encoding pdu length */
- u16_t pdulen;
- /* encoding community length */
- u16_t comlen;
- /* encoding version length */
- u16_t verlen;
- /* encoding sequence length */
- u16_t seqlen;
-};
-
-/* Accepting new SNMP messages. */
-#define SNMP_MSG_EMPTY 0
-/* Search for matching object for variable binding. */
-#define SNMP_MSG_SEARCH_OBJ 1
-/* Perform SNMP operation on in-memory object.
- Pass-through states, for symmetry only. */
-#define SNMP_MSG_INTERNAL_GET_OBJDEF 2
-#define SNMP_MSG_INTERNAL_GET_VALUE 3
-#define SNMP_MSG_INTERNAL_SET_TEST 4
-#define SNMP_MSG_INTERNAL_GET_OBJDEF_S 5
-#define SNMP_MSG_INTERNAL_SET_VALUE 6
-/* Perform SNMP operation on object located externally.
- In theory this could be used for building a proxy agent.
- Practical use is for an enterprise spc. app. gateway. */
-#define SNMP_MSG_EXTERNAL_GET_OBJDEF 7
-#define SNMP_MSG_EXTERNAL_GET_VALUE 8
-#define SNMP_MSG_EXTERNAL_SET_TEST 9
-#define SNMP_MSG_EXTERNAL_GET_OBJDEF_S 10
-#define SNMP_MSG_EXTERNAL_SET_VALUE 11
-
-#define SNMP_COMMUNITY_STR_LEN 64
-struct snmp_msg_pstat
-{
- /* lwIP local port (161) binding */
- struct udp_pcb *pcb;
- /* source IP address */
- ip_addr_t sip;
- /* source UDP port */
- u16_t sp;
- /* request type */
- u8_t rt;
- /* request ID */
- s32_t rid;
- /* error status */
- s32_t error_status;
- /* error index */
- s32_t error_index;
- /* community name (zero terminated) */
- u8_t community[SNMP_COMMUNITY_STR_LEN + 1];
- /* community string length (exclusive zero term) */
- u8_t com_strlen;
- /* one out of MSG_EMPTY, MSG_DEMUX, MSG_INTERNAL, MSG_EXTERNAL_x */
- u8_t state;
- /* saved arguments for MSG_EXTERNAL_x */
- struct mib_external_node *ext_mib_node;
- struct snmp_name_ptr ext_name_ptr;
- struct obj_def ext_object_def;
- struct snmp_obj_id ext_oid;
- /* index into input variable binding list */
- u8_t vb_idx;
- /* ptr into input variable binding list */
- struct snmp_varbind *vb_ptr;
- /* list of variable bindings from input */
- struct snmp_varbind_root invb;
- /* list of variable bindings to output */
- struct snmp_varbind_root outvb;
- /* output response lengths used in ASN encoding */
- struct snmp_resp_header_lengths rhl;
-};
-
-struct snmp_msg_trap
-{
- /* lwIP local port (161) binding */
- struct udp_pcb *pcb;
- /* destination IP address in network order */
- ip_addr_t dip;
-
- /* source enterprise ID (sysObjectID) */
- struct snmp_obj_id *enterprise;
- /* source IP address, raw network order format */
- u8_t sip_raw[4];
- /* generic trap code */
- u32_t gen_trap;
- /* specific trap code */
- u32_t spc_trap;
- /* timestamp */
- u32_t ts;
- /* list of variable bindings to output */
- struct snmp_varbind_root outvb;
- /* output trap lengths used in ASN encoding */
- struct snmp_trap_header_lengths thl;
-};
-
-/** Agent Version constant, 0 = v1 oddity */
-extern const s32_t snmp_version;
-/** Agent default "public" community string */
-extern const char snmp_publiccommunity[7];
-
-extern struct snmp_msg_trap trap_msg;
-
-/** Agent setup, start listening to port 161. */
-void snmp_init(void);
-void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable);
-void snmp_trap_dst_ip_set(u8_t dst_idx, ip_addr_t *dst);
-
-/** Varbind-list functions. */
-struct snmp_varbind* snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len);
-void snmp_varbind_free(struct snmp_varbind *vb);
-void snmp_varbind_list_free(struct snmp_varbind_root *root);
-void snmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb);
-struct snmp_varbind* snmp_varbind_tail_remove(struct snmp_varbind_root *root);
-
-/** Handle an internal (recv) or external (private response) event. */
-void snmp_msg_event(u8_t request_id);
-err_t snmp_send_response(struct snmp_msg_pstat *m_stat);
-err_t snmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap);
-void snmp_coldstart_trap(void);
-void snmp_authfail_trap(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_SNMP */
-
-#endif /* __LWIP_SNMP_MSG_H__ */
--- a/LPC2368/lwip/include/lwip/snmp_structs.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/**
- * @file
- * Generic MIB tree structures.
- *
- * @todo namespace prefixes
- */
-
-/*
- * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands.
- * 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: Christiaan Simons <christiaan.simons@axon.tv>
- */
-
-#ifndef __LWIP_SNMP_STRUCTS_H__
-#define __LWIP_SNMP_STRUCTS_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/snmp.h"
-
-#if SNMP_PRIVATE_MIB
-/* When using a private MIB, you have to create a file 'private_mib.h' that contains
- * a 'struct mib_array_node mib_private' which contains your MIB. */
-#include "private_mib.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* MIB object instance */
-#define MIB_OBJECT_NONE 0
-#define MIB_OBJECT_SCALAR 1
-#define MIB_OBJECT_TAB 2
-
-/* MIB access types */
-#define MIB_ACCESS_READ 1
-#define MIB_ACCESS_WRITE 2
-
-/* MIB object access */
-#define MIB_OBJECT_READ_ONLY MIB_ACCESS_READ
-#define MIB_OBJECT_READ_WRITE (MIB_ACCESS_READ | MIB_ACCESS_WRITE)
-#define MIB_OBJECT_WRITE_ONLY MIB_ACCESS_WRITE
-#define MIB_OBJECT_NOT_ACCESSIBLE 0
-
-/** object definition returned by (get_object_def)() */
-struct obj_def
-{
- /* MIB_OBJECT_NONE (0), MIB_OBJECT_SCALAR (1), MIB_OBJECT_TAB (2) */
- u8_t instance;
- /* 0 read-only, 1 read-write, 2 write-only, 3 not-accessible */
- u8_t access;
- /* ASN type for this object */
- u8_t asn_type;
- /* value length (host length) */
- u16_t v_len;
- /* length of instance part of supplied object identifier */
- u8_t id_inst_len;
- /* instance part of supplied object identifier */
- s32_t *id_inst_ptr;
-};
-
-struct snmp_name_ptr
-{
- u8_t ident_len;
- s32_t *ident;
-};
-
-/** MIB const scalar (.0) node */
-#define MIB_NODE_SC 0x01
-/** MIB const array node */
-#define MIB_NODE_AR 0x02
-/** MIB array node (mem_malloced from RAM) */
-#define MIB_NODE_RA 0x03
-/** MIB list root node (mem_malloced from RAM) */
-#define MIB_NODE_LR 0x04
-/** MIB node for external objects */
-#define MIB_NODE_EX 0x05
-
-/** node "base class" layout, the mandatory fields for a node */
-struct mib_node
-{
- /** returns struct obj_def for the given object identifier */
- void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
- /** returns object value for the given object identifier,
- @note the caller must allocate at least len bytes for the value */
- void (*get_value)(struct obj_def *od, u16_t len, void *value);
- /** tests length and/or range BEFORE setting */
- u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
- /** sets object value, only to be called when set_test() */
- void (*set_value)(struct obj_def *od, u16_t len, void *value);
- /** One out of MIB_NODE_AR, MIB_NODE_LR or MIB_NODE_EX */
- u8_t node_type;
- /* array or max list length */
- u16_t maxlength;
-};
-
-/** derived node for scalars .0 index */
-typedef struct mib_node mib_scalar_node;
-
-/** derived node, points to a fixed size const array
- of sub-identifiers plus a 'child' pointer */
-struct mib_array_node
-{
- /* inherited "base class" members */
- void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
- void (*get_value)(struct obj_def *od, u16_t len, void *value);
- u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
- void (*set_value)(struct obj_def *od, u16_t len, void *value);
-
- u8_t node_type;
- u16_t maxlength;
-
- /* additional struct members */
- const s32_t *objid;
- struct mib_node* const *nptr;
-};
-
-/** derived node, points to a fixed size mem_malloced array
- of sub-identifiers plus a 'child' pointer */
-struct mib_ram_array_node
-{
- /* inherited "base class" members */
- void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
- void (*get_value)(struct obj_def *od, u16_t len, void *value);
- u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
- void (*set_value)(struct obj_def *od, u16_t len, void *value);
-
- u8_t node_type;
- u16_t maxlength;
-
- /* aditional struct members */
- s32_t *objid;
- struct mib_node **nptr;
-};
-
-struct mib_list_node
-{
- struct mib_list_node *prev;
- struct mib_list_node *next;
- s32_t objid;
- struct mib_node *nptr;
-};
-
-/** derived node, points to a doubly linked list
- of sub-identifiers plus a 'child' pointer */
-struct mib_list_rootnode
-{
- /* inherited "base class" members */
- void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
- void (*get_value)(struct obj_def *od, u16_t len, void *value);
- u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
- void (*set_value)(struct obj_def *od, u16_t len, void *value);
-
- u8_t node_type;
- u16_t maxlength;
-
- /* additional struct members */
- struct mib_list_node *head;
- struct mib_list_node *tail;
- /* counts list nodes in list */
- u16_t count;
-};
-
-/** derived node, has access functions for mib object in external memory or device
- using 'tree_level' and 'idx', with a range 0 .. (level_length() - 1) */
-struct mib_external_node
-{
- /* inherited "base class" members */
- void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
- void (*get_value)(struct obj_def *od, u16_t len, void *value);
- u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
- void (*set_value)(struct obj_def *od, u16_t len, void *value);
-
- u8_t node_type;
- u16_t maxlength;
-
- /* additional struct members */
- /** points to an external (in memory) record of some sort of addressing
- information, passed to and interpreted by the funtions below */
- void* addr_inf;
- /** tree levels under this node */
- u8_t tree_levels;
- /** number of objects at this level */
- u16_t (*level_length)(void* addr_inf, u8_t level);
- /** compares object sub identifier with external id
- return zero when equal, nonzero when unequal */
- s32_t (*ident_cmp)(void* addr_inf, u8_t level, u16_t idx, s32_t sub_id);
- void (*get_objid)(void* addr_inf, u8_t level, u16_t idx, s32_t *sub_id);
-
- /** async Questions */
- void (*get_object_def_q)(void* addr_inf, u8_t rid, u8_t ident_len, s32_t *ident);
- void (*get_value_q)(u8_t rid, struct obj_def *od);
- void (*set_test_q)(u8_t rid, struct obj_def *od);
- void (*set_value_q)(u8_t rid, struct obj_def *od, u16_t len, void *value);
- /** async Answers */
- void (*get_object_def_a)(u8_t rid, u8_t ident_len, s32_t *ident, struct obj_def *od);
- void (*get_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value);
- u8_t (*set_test_a)(u8_t rid, struct obj_def *od, u16_t len, void *value);
- void (*set_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value);
- /** async Panic Close (agent returns error reply,
- e.g. used for external transaction cleanup) */
- void (*get_object_def_pc)(u8_t rid, u8_t ident_len, s32_t *ident);
- void (*get_value_pc)(u8_t rid, struct obj_def *od);
- void (*set_test_pc)(u8_t rid, struct obj_def *od);
- void (*set_value_pc)(u8_t rid, struct obj_def *od);
-};
-
-/** export MIB tree from mib2.c */
-extern const struct mib_array_node internet;
-
-/** dummy function pointers for non-leaf MIB nodes from mib2.c */
-void noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
-void noleafs_get_value(struct obj_def *od, u16_t len, void *value);
-u8_t noleafs_set_test(struct obj_def *od, u16_t len, void *value);
-void noleafs_set_value(struct obj_def *od, u16_t len, void *value);
-
-void snmp_oidtoip(s32_t *ident, ip_addr_t *ip);
-void snmp_iptooid(ip_addr_t *ip, s32_t *ident);
-void snmp_ifindextonetif(s32_t ifindex, struct netif **netif);
-void snmp_netiftoifindex(struct netif *netif, s32_t *ifidx);
-
-struct mib_list_node* snmp_mib_ln_alloc(s32_t id);
-void snmp_mib_ln_free(struct mib_list_node *ln);
-struct mib_list_rootnode* snmp_mib_lrn_alloc(void);
-void snmp_mib_lrn_free(struct mib_list_rootnode *lrn);
-
-s8_t snmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn);
-s8_t snmp_mib_node_find(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **fn);
-struct mib_list_rootnode *snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n);
-
-struct mib_node* snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np);
-struct mib_node* snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret);
-u8_t snmp_iso_prefix_tst(u8_t ident_len, s32_t *ident);
-u8_t snmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_SNMP */
-
-#endif /* __LWIP_SNMP_STRUCTS_H__ */
--- a/LPC2368/lwip/include/lwip/sockets.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,376 +0,0 @@
-/*
- * 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 __LWIP_SOCKETS_H__
-#define __LWIP_SOCKETS_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
-
-#include <stddef.h> /* for size_t */
-
-#include "lwip/ip_addr.h"
-#include "lwip/inet.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* members are in network byte order */
-struct sockaddr_in {
- u8_t sin_len;
- u8_t sin_family;
- u16_t sin_port;
- struct in_addr sin_addr;
- char sin_zero[8];
-};
-
-struct sockaddr {
- u8_t sa_len;
- u8_t sa_family;
- u16_t sa_data[14];
-};
-
-#ifndef socklen_t
-# define socklen_t u32_t
-#endif
-
-/* Socket protocol types (TCP/UDP/RAW) */
-#define SOCK_STREAM 1
-#define SOCK_DGRAM 2
-#define SOCK_RAW 3
-
-/*
- * 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_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.
- */
-struct linger {
- int l_onoff; /* option on/off */
- int l_linger; /* linger time */
-};
-
-/*
- * Level number for (get/set)sockopt() to apply to socket itself.
- */
-#define SOL_SOCKET 0xfff /* options for socket level */
-
-
-#define AF_UNSPEC 0
-#define AF_INET 2
-#define PF_INET AF_INET
-#define PF_UNSPEC AF_UNSPEC
-
-#define IPPROTO_IP 0
-#define IPPROTO_TCP 6
-#define IPPROTO_UDP 17
-#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 */
-
-
-/*
- * Options for level IPPROTO_IP
- */
-#define IP_TOS 1
-#define IP_TTL 2
-
-#if LWIP_TCP
-/*
- * Options for level IPPROTO_TCP
- */
-#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
-#define TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */
-#define TCP_KEEPIDLE 0x03 /* set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */
-#define TCP_KEEPINTVL 0x04 /* set pcb->keep_intvl - Use seconds for get/setsockopt */
-#define TCP_KEEPCNT 0x05 /* set pcb->keep_cnt - Use number of probes sent for get/setsockopt */
-#endif /* LWIP_TCP */
-
-#if LWIP_UDP && LWIP_UDPLITE
-/*
- * Options for level IPPROTO_UDPLITE
- */
-#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */
-#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */
-#endif /* LWIP_UDP && LWIP_UDPLITE*/
-
-
-#if LWIP_IGMP
-/*
- * Options and types for UDP multicast traffic handling
- */
-#define IP_ADD_MEMBERSHIP 3
-#define IP_DROP_MEMBERSHIP 4
-#define IP_MULTICAST_TTL 5
-#define IP_MULTICAST_IF 6
-#define IP_MULTICAST_LOOP 7
-
-typedef struct ip_mreq {
- struct in_addr imr_multiaddr; /* IP multicast address of group */
- struct in_addr imr_interface; /* local IP address of interface */
-} ip_mreq;
-#endif /* LWIP_IGMP */
-
-/*
- * The Type of Service provides an indication of the abstract
- * parameters of the quality of service desired. These parameters are
- * to be used to guide the selection of the actual service parameters
- * when transmitting a datagram through a particular network. Several
- * networks offer service precedence, which somehow treats high
- * precedence traffic as more important than other traffic (generally
- * by accepting only traffic above a certain precedence at time of high
- * load). The major choice is a three way tradeoff between low-delay,
- * high-reliability, and high-throughput.
- * The use of the Delay, Throughput, and Reliability indications may
- * increase the cost (in some sense) of the service. In many networks
- * better performance for one of these parameters is coupled with worse
- * performance on another. Except for very unusual cases at most two
- * of these three indications should be set.
- */
-#define IPTOS_TOS_MASK 0x1E
-#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK)
-#define IPTOS_LOWDELAY 0x10
-#define IPTOS_THROUGHPUT 0x08
-#define IPTOS_RELIABILITY 0x04
-#define IPTOS_LOWCOST 0x02
-#define IPTOS_MINCOST IPTOS_LOWCOST
-
-/*
- * The Network Control precedence designation is intended to be used
- * within a network only. The actual use and control of that
- * designation is up to each network. The Internetwork Control
- * designation is intended for use by gateway control originators only.
- * If the actual use of these precedence designations is of concern to
- * a particular network, it is the responsibility of that network to
- * control the access to, and use of, those precedence designations.
- */
-#define IPTOS_PREC_MASK 0xe0
-#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK)
-#define IPTOS_PREC_NETCONTROL 0xe0
-#define IPTOS_PREC_INTERNETCONTROL 0xc0
-#define IPTOS_PREC_CRITIC_ECP 0xa0
-#define IPTOS_PREC_FLASHOVERRIDE 0x80
-#define IPTOS_PREC_FLASH 0x60
-#define IPTOS_PREC_IMMEDIATE 0x40
-#define IPTOS_PREC_PRIORITY 0x20
-#define IPTOS_PREC_ROUTINE 0x00
-
-
-/*
- * Commands for ioctlsocket(), taken from the BSD file fcntl.h.
- * lwip_ioctl only supports FIONREAD and FIONBIO, for now
- *
- * Ioctl's have the command encoded in the lower word,
- * and the size of any in or out parameters in the upper
- * word. The high 2 bits of the upper word are used
- * to encode the in/out status of the parameter; for now
- * we restrict parameters to at most 128 bytes.
- */
-#if !defined(FIONREAD) || !defined(FIONBIO)
-#define IOCPARM_MASK 0x7fU /* parameters must be < 128 bytes */
-#define IOC_VOID 0x20000000UL /* no parameters */
-#define IOC_OUT 0x40000000UL /* copy out parameters */
-#define IOC_IN 0x80000000UL /* copy in parameters */
-#define IOC_INOUT (IOC_IN|IOC_OUT)
- /* 0x20000000 distinguishes new &
- old ioctl's */
-#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
-
-#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
-
-#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
-#endif /* !defined(FIONREAD) || !defined(FIONBIO) */
-
-#ifndef FIONREAD
-#define FIONREAD _IOR('f', 127, unsigned long) /* get # bytes to read */
-#endif
-#ifndef FIONBIO
-#define FIONBIO _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */
-#endif
-
-/* Socket I/O Controls: unimplemented */
-#ifndef SIOCSHIWAT
-#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */
-#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */
-#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */
-#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */
-#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */
-#endif
-
-/* commands for fnctl */
-#ifndef F_GETFL
-#define F_GETFL 3
-#endif
-#ifndef F_SETFL
-#define F_SETFL 4
-#endif
-
-/* File status flags and file access modes for fnctl,
- these are bits in an int. */
-#ifndef O_NONBLOCK
-#define O_NONBLOCK 1 /* nonblocking I/O */
-#endif
-#ifndef O_NDELAY
-#define O_NDELAY 1 /* same as O_NONBLOCK, for compatibility */
-#endif
-
-#ifndef SHUT_RD
- #define SHUT_RD 1
- #define SHUT_WR 2
- #define SHUT_RDWR 3
-#endif
-
-/* FD_SET used for lwip_select */
-#ifndef FD_SET
- #undef FD_SETSIZE
- /* Make FD_SETSIZE match NUM_SOCKETS in socket.c */
- #define FD_SETSIZE MEMP_NUM_NETCONN
- #define FD_SET(n, p) ((p)->fd_bits[(n)/8] |= (1 << ((n) & 7)))
- #define FD_CLR(n, p) ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7)))
- #define FD_ISSET(n,p) ((p)->fd_bits[(n)/8] & (1 << ((n) & 7)))
- #define FD_ZERO(p) memset((void*)(p),0,sizeof(*(p)))
-
- typedef struct fd_set {
- unsigned char fd_bits [(FD_SETSIZE+7)/8];
- } fd_set;
-
-#endif /* FD_SET */
-
-/** 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
-#endif
-
-#if LWIP_TIMEVAL_PRIVATE
-struct timeval {
- long tv_sec; /* seconds */
- long tv_usec; /* and microseconds */
-};
-#endif /* LWIP_TIMEVAL_PRIVATE */
-
-void lwip_socket_init(void);
-
-int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
-int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen);
-int lwip_shutdown(int s, int how);
-int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen);
-int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen);
-int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);
-int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);
-int lwip_close(int s);
-int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen);
-int lwip_listen(int s, int backlog);
-int lwip_recv(int s, void *mem, size_t len, int flags);
-int lwip_read(int s, void *mem, size_t len);
-int lwip_recvfrom(int s, void *mem, size_t len, int flags,
- struct sockaddr *from, socklen_t *fromlen);
-int lwip_send(int s, const void *dataptr, size_t size, int flags);
-int lwip_sendto(int s, const void *dataptr, size_t size, int flags,
- const struct sockaddr *to, socklen_t tolen);
-int lwip_socket(int domain, int type, int protocol);
-int lwip_write(int s, const void *dataptr, size_t size);
-int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
- struct timeval *timeout);
-int lwip_ioctl(int s, long cmd, void *argp);
-int lwip_fcntl(int s, int cmd, int val);
-
-#if LWIP_COMPAT_SOCKETS
-#define accept(a,b,c) lwip_accept(a,b,c)
-#define bind(a,b,c) lwip_bind(a,b,c)
-#define shutdown(a,b) lwip_shutdown(a,b)
-#define closesocket(s) lwip_close(s)
-#define connect(a,b,c) lwip_connect(a,b,c)
-#define getsockname(a,b,c) lwip_getsockname(a,b,c)
-#define getpeername(a,b,c) lwip_getpeername(a,b,c)
-#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e)
-#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e)
-#define listen(a,b) lwip_listen(a,b)
-#define recv(a,b,c,d) lwip_recv(a,b,c,d)
-#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f)
-#define send(a,b,c,d) lwip_send(a,b,c,d)
-#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f)
-#define socket(a,b,c) lwip_socket(a,b,c)
-#define select(a,b,c,d,e) lwip_select(a,b,c,d,e)
-#define ioctlsocket(a,b,c) lwip_ioctl(a,b,c)
-
-#if LWIP_POSIX_SOCKETS_IO_NAMES
-#define read(a,b,c) lwip_read(a,b,c)
-#define write(a,b,c) lwip_write(a,b,c)
-#define close(s) lwip_close(s)
-#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */
-
-#endif /* LWIP_COMPAT_SOCKETS */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_SOCKET */
-
-#endif /* __LWIP_SOCKETS_H__ */
--- a/LPC2368/lwip/include/lwip/stats.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,292 +0,0 @@
-/*
- * 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 __LWIP_STATS_H__
-#define __LWIP_STATS_H__
-
-#include "lwip/opt.h"
-
-#include "lwip/mem.h"
-#include "lwip/memp.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if LWIP_STATS
-
-#ifndef LWIP_STATS_LARGE
-#define LWIP_STATS_LARGE 0
-#endif
-
-#if LWIP_STATS_LARGE
-#define STAT_COUNTER u32_t
-#define STAT_COUNTER_F U32_F
-#else
-#define STAT_COUNTER u16_t
-#define STAT_COUNTER_F U16_F
-#endif
-
-struct stats_proto {
- STAT_COUNTER xmit; /* Transmitted packets. */
- STAT_COUNTER recv; /* Received packets. */
- STAT_COUNTER fw; /* Forwarded packets. */
- STAT_COUNTER drop; /* Dropped packets. */
- STAT_COUNTER chkerr; /* Checksum error. */
- STAT_COUNTER lenerr; /* Invalid length error. */
- STAT_COUNTER memerr; /* Out of memory error. */
- STAT_COUNTER rterr; /* Routing error. */
- STAT_COUNTER proterr; /* Protocol error. */
- STAT_COUNTER opterr; /* Error in options. */
- STAT_COUNTER err; /* Misc error. */
- STAT_COUNTER cachehit;
-};
-
-struct stats_igmp {
- STAT_COUNTER xmit; /* Transmitted packets. */
- STAT_COUNTER recv; /* Received packets. */
- STAT_COUNTER drop; /* Dropped packets. */
- STAT_COUNTER chkerr; /* Checksum error. */
- STAT_COUNTER lenerr; /* Invalid length error. */
- STAT_COUNTER memerr; /* Out of memory error. */
- STAT_COUNTER proterr; /* Protocol error. */
- STAT_COUNTER rx_v1; /* Received v1 frames. */
- STAT_COUNTER rx_group; /* Received group-specific queries. */
- STAT_COUNTER rx_general; /* Received general queries. */
- STAT_COUNTER rx_report; /* Received reports. */
- STAT_COUNTER tx_join; /* Sent joins. */
- STAT_COUNTER tx_leave; /* Sent leaves. */
- STAT_COUNTER tx_report; /* Sent reports. */
-};
-
-struct stats_mem {
-#ifdef LWIP_DEBUG
- const char *name;
-#endif /* LWIP_DEBUG */
- mem_size_t avail;
- mem_size_t used;
- mem_size_t max;
- STAT_COUNTER err;
- STAT_COUNTER illegal;
-};
-
-struct stats_syselem {
- STAT_COUNTER used;
- STAT_COUNTER max;
- STAT_COUNTER err;
-};
-
-struct stats_sys {
- struct stats_syselem sem;
- struct stats_syselem mutex;
- struct stats_syselem mbox;
-};
-
-struct stats_ {
-#if LINK_STATS
- struct stats_proto link;
-#endif
-#if ETHARP_STATS
- struct stats_proto etharp;
-#endif
-#if IPFRAG_STATS
- struct stats_proto ip_frag;
-#endif
-#if IP_STATS
- struct stats_proto ip;
-#endif
-#if ICMP_STATS
- struct stats_proto icmp;
-#endif
-#if IGMP_STATS
- struct stats_igmp igmp;
-#endif
-#if UDP_STATS
- struct stats_proto udp;
-#endif
-#if TCP_STATS
- struct stats_proto tcp;
-#endif
-#if MEM_STATS
- struct stats_mem mem;
-#endif
-#if MEMP_STATS
- struct stats_mem memp[MEMP_MAX];
-#endif
-#if SYS_STATS
- struct stats_sys sys;
-#endif
-};
-
-extern struct stats_ lwip_stats;
-
-void stats_init(void);
-
-#define STATS_INC(x) ++lwip_stats.x
-#define STATS_DEC(x) --lwip_stats.x
-#define STATS_INC_USED(x, y) do { lwip_stats.x.used += y; \
- if (lwip_stats.x.max < lwip_stats.x.used) { \
- lwip_stats.x.max = lwip_stats.x.used; \
- } \
- } while(0)
-#else /* LWIP_STATS */
-#define stats_init()
-#define STATS_INC(x)
-#define STATS_DEC(x)
-#define STATS_INC_USED(x)
-#endif /* LWIP_STATS */
-
-#if TCP_STATS
-#define TCP_STATS_INC(x) STATS_INC(x)
-#define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP")
-#else
-#define TCP_STATS_INC(x)
-#define TCP_STATS_DISPLAY()
-#endif
-
-#if UDP_STATS
-#define UDP_STATS_INC(x) STATS_INC(x)
-#define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP")
-#else
-#define UDP_STATS_INC(x)
-#define UDP_STATS_DISPLAY()
-#endif
-
-#if ICMP_STATS
-#define ICMP_STATS_INC(x) STATS_INC(x)
-#define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP")
-#else
-#define ICMP_STATS_INC(x)
-#define ICMP_STATS_DISPLAY()
-#endif
-
-#if IGMP_STATS
-#define IGMP_STATS_INC(x) STATS_INC(x)
-#define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp)
-#else
-#define IGMP_STATS_INC(x)
-#define IGMP_STATS_DISPLAY()
-#endif
-
-#if IP_STATS
-#define IP_STATS_INC(x) STATS_INC(x)
-#define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP")
-#else
-#define IP_STATS_INC(x)
-#define IP_STATS_DISPLAY()
-#endif
-
-#if IPFRAG_STATS
-#define IPFRAG_STATS_INC(x) STATS_INC(x)
-#define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG")
-#else
-#define IPFRAG_STATS_INC(x)
-#define IPFRAG_STATS_DISPLAY()
-#endif
-
-#if ETHARP_STATS
-#define ETHARP_STATS_INC(x) STATS_INC(x)
-#define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP")
-#else
-#define ETHARP_STATS_INC(x)
-#define ETHARP_STATS_DISPLAY()
-#endif
-
-#if LINK_STATS
-#define LINK_STATS_INC(x) STATS_INC(x)
-#define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK")
-#else
-#define LINK_STATS_INC(x)
-#define LINK_STATS_DISPLAY()
-#endif
-
-#if MEM_STATS
-#define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y
-#define MEM_STATS_INC(x) STATS_INC(mem.x)
-#define MEM_STATS_INC_USED(x, y) STATS_INC_USED(mem, y)
-#define MEM_STATS_DEC_USED(x, y) lwip_stats.mem.x -= y
-#define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP")
-#else
-#define MEM_STATS_AVAIL(x, y)
-#define MEM_STATS_INC(x)
-#define MEM_STATS_INC_USED(x, y)
-#define MEM_STATS_DEC_USED(x, y)
-#define MEM_STATS_DISPLAY()
-#endif
-
-#if MEMP_STATS
-#define MEMP_STATS_AVAIL(x, i, y) lwip_stats.memp[i].x = y
-#define MEMP_STATS_INC(x, i) STATS_INC(memp[i].x)
-#define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i].x)
-#define MEMP_STATS_INC_USED(x, i) STATS_INC_USED(memp[i], 1)
-#define MEMP_STATS_DISPLAY(i) stats_display_memp(&lwip_stats.memp[i], i)
-#else
-#define MEMP_STATS_AVAIL(x, i, y)
-#define MEMP_STATS_INC(x, i)
-#define MEMP_STATS_DEC(x, i)
-#define MEMP_STATS_INC_USED(x, i)
-#define MEMP_STATS_DISPLAY(i)
-#endif
-
-#if SYS_STATS
-#define SYS_STATS_INC(x) STATS_INC(sys.x)
-#define SYS_STATS_DEC(x) STATS_DEC(sys.x)
-#define SYS_STATS_INC_USED(x) STATS_INC_USED(sys.x, 1)
-#define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys)
-#else
-#define SYS_STATS_INC(x)
-#define SYS_STATS_DEC(x)
-#define SYS_STATS_INC_USED(x)
-#define SYS_STATS_DISPLAY()
-#endif
-
-/* Display of statistics */
-#if LWIP_STATS_DISPLAY
-void stats_display(void);
-void stats_display_proto(struct stats_proto *proto, char *name);
-void stats_display_igmp(struct stats_igmp *igmp);
-void stats_display_mem(struct stats_mem *mem, char *name);
-void stats_display_memp(struct stats_mem *mem, int index);
-void stats_display_sys(struct stats_sys *sys);
-#else /* LWIP_STATS_DISPLAY */
-#define stats_display()
-#define stats_display_proto(proto, name)
-#define stats_display_igmp(igmp)
-#define stats_display_mem(mem, name)
-#define stats_display_memp(mem, index)
-#define stats_display_sys(sys)
-#endif /* LWIP_STATS_DISPLAY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_STATS_H__ */
--- a/LPC2368/lwip/include/lwip/sys.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,331 +0,0 @@
-/*
- * 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 __LWIP_SYS_H__
-#define __LWIP_SYS_H__
-
-#include "lwip/opt.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if NO_SYS
-
-/* For a totally minimal and standalone system, we provide null
- definitions of the sys_ functions. */
-typedef u8_t sys_sem_t;
-typedef u8_t sys_mutex_t;
-typedef u8_t sys_mbox_t;
-
-#define sys_sem_new(s, c) ERR_OK
-#define sys_sem_signal(s)
-#define sys_sem_wait(s)
-#define sys_arch_sem_wait(s,t)
-#define sys_sem_free(s)
-#define sys_mutex_new(mu) ERR_OK
-#define sys_mutex_lock(mu)
-#define sys_mutex_unlock(mu)
-#define sys_mutex_free(mu)
-#define sys_mbox_new(m, s) ERR_OK
-#define sys_mbox_fetch(m,d)
-#define sys_mbox_tryfetch(m,d)
-#define sys_mbox_post(m,d)
-#define sys_mbox_trypost(m,d)
-#define sys_mbox_free(m)
-
-#define sys_thread_new(n,t,a,s,p)
-
-#define sys_msleep(t)
-
-#else /* NO_SYS */
-
-/** Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait */
-#define SYS_ARCH_TIMEOUT 0xffffffffUL
-
-/** sys_mbox_tryfetch() returns SYS_MBOX_EMPTY if appropriate.
- * For now we use the same magic value, but we allow this to change in future.
- */
-#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT
-
-#include "lwip/err.h"
-#include "arch/sys_arch.h"
-
-/** Function prototype for thread functions */
-typedef void (*lwip_thread_fn)(void *arg);
-
-/* Function prototypes for functions to be implemented by platform ports
- (in sys_arch.c) */
-
-/* Mutex functions: */
-
-/** Define LWIP_COMPAT_MUTEX if the port has no mutexes and binary semaphores
- should be used instead */
-#if LWIP_COMPAT_MUTEX
-/* for old ports that don't have mutexes: define them to binary semaphores */
-#define sys_mutex_t sys_sem_t
-#define sys_mutex_new(mutex) sys_sem_new(mutex, 1)
-#define sys_mutex_lock(mutex) sys_sem_wait(mutex)
-#define sys_mutex_unlock(mutex) sys_sem_signal(mutex)
-#define sys_mutex_free(mutex) sys_sem_free(mutex)
-#define sys_mutex_valid(mutex) sys_sem_valid(mutex)
-#define sys_mutex_set_invalid(mutex) sys_sem_set_invalid(mutex)
-
-#else /* LWIP_COMPAT_MUTEX */
-
-/** Create a new mutex
- * @param mutex pointer to the mutex to create
- * @return a new mutex */
-err_t sys_mutex_new(sys_mutex_t *mutex);
-/** Lock a mutex
- * @param mutex the mutex to lock */
-void sys_mutex_lock(sys_mutex_t *mutex);
-/** Unlock a mutex
- * @param mutex the mutex to unlock */
-void sys_mutex_unlock(sys_mutex_t *mutex);
-/** Delete a semaphore
- * @param mutex the mutex to delete */
-void sys_mutex_free(sys_mutex_t *mutex);
-#ifndef sys_mutex_valid
-/** Check if a mutex is valid/allocated: return 1 for valid, 0 for invalid */
-int sys_mutex_valid(sys_mutex_t *mutex);
-#endif
-#ifndef sys_mutex_set_invalid
-/** Set a mutex invalid so that sys_mutex_valid returns 0 */
-void sys_mutex_set_invalid(sys_mutex_t *mutex);
-#endif
-#endif /* LWIP_COMPAT_MUTEX */
-
-/* Semaphore functions: */
-
-/** Create a new semaphore
- * @param sem pointer to the semaphore to create
- * @param count initial count of the semaphore
- * @return ERR_OK if successful, another err_t otherwise */
-err_t sys_sem_new(sys_sem_t *sem, u8_t count);
-/** Signals a semaphore
- * @param sem the semaphore to signal */
-void sys_sem_signal(sys_sem_t *sem);
-/** Wait for a semaphore for the specified timeout
- * @param sem the semaphore to wait for
- * @param timeout timeout in milliseconds to wait (0 = wait forever)
- * @return time (in milliseconds) waited for the semaphore
- * or SYS_ARCH_TIMEOUT on timeout */
-u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout);
-/** Delete a semaphore
- * @param sem semaphore to delete */
-void sys_sem_free(sys_sem_t *sem);
-/** Wait for a semaphore - forever/no timeout */
-#define sys_sem_wait(sem) sys_arch_sem_wait(sem, 0)
-#ifndef sys_sem_valid
-/** Check if a sempahore is valid/allocated: return 1 for valid, 0 for invalid */
-int sys_sem_valid(sys_sem_t *sem);
-#endif
-#ifndef sys_sem_set_invalid
-/** Set a semaphore invalid so that sys_sem_valid returns 0 */
-void sys_sem_set_invalid(sys_sem_t *sem);
-#endif
-
-/* Time functions. */
-#ifndef sys_msleep
-void sys_msleep(u32_t ms); /* only has a (close to) 1 jiffy resolution. */
-#endif
-
-/* Mailbox functions. */
-
-/** Create a new mbox of specified size
- * @param mbox pointer to the mbox to create
- * @param size (miminum) number of messages in this mbox
- * @return ERR_OK if successful, another err_t otherwise */
-err_t sys_mbox_new(sys_mbox_t *mbox, int size);
-/** Post a message to an mbox - may not fail
- * -> blocks if full, only used from tasks not from ISR
- * @param mbox mbox to posts the message
- * @param msg message to post (ATTENTION: can be NULL) */
-void sys_mbox_post(sys_mbox_t *mbox, void *msg);
-/** Try to post a message to an mbox - may fail if full or ISR
- * @param mbox mbox to posts the message
- * @param msg message to post (ATTENTION: can be NULL) */
-err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg);
-/** Wait for a new message to arrive in the mbox
- * @param mbox mbox to get a message from
- * @param msg pointer where the message is stored
- * @param timeout maximum time (in milliseconds) to wait for a message
- * @return time (in milliseconds) waited for a message, may be 0 if not waited
- or SYS_ARCH_TIMEOUT on timeout
- * The returned time has to be accurate to prevent timer jitter! */
-u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout);
-/* Allow port to override with a macro, e.g. special timout for sys_arch_mbox_fetch() */
-#ifndef sys_arch_mbox_tryfetch
-/** Wait for a new message to arrive in the mbox
- * @param mbox mbox to get a message from
- * @param msg pointer where the message is stored
- * @param timeout maximum time (in milliseconds) to wait for a message
- * @return 0 (milliseconds) if a message has been received
- * or SYS_MBOX_EMPTY if the mailbox is empty */
-u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg);
-#endif
-/** For now, we map straight to sys_arch implementation. */
-#define sys_mbox_tryfetch(mbox, msg) sys_arch_mbox_tryfetch(mbox, msg)
-/** Delete an mbox
- * @param mbox mbox to delete */
-void sys_mbox_free(sys_mbox_t *mbox);
-#define sys_mbox_fetch(mbox, msg) sys_arch_mbox_fetch(mbox, msg, 0)
-#ifndef sys_mbox_valid
-/** Check if an mbox is valid/allocated: return 1 for valid, 0 for invalid */
-int sys_mbox_valid(sys_mbox_t *mbox);
-#endif
-#ifndef sys_mbox_set_invalid
-/** Set an mbox invalid so that sys_mbox_valid returns 0 */
-void sys_mbox_set_invalid(sys_mbox_t *mbox);
-#endif
-
-/** The only thread function:
- * Creates a new thread
- * @param name human-readable name for the thread (used for debugging purposes)
- * @param thread thread-function
- * @param arg parameter passed to 'thread'
- * @param stacksize stack size in bytes for the new thread (may be ignored by ports)
- * @param prio priority of the new thread (may be ignored by ports) */
-sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio);
-
-#endif /* NO_SYS */
-
-/* sys_init() must be called before anthing else. */
-void sys_init(void);
-
-#ifndef sys_jiffies
-/** Ticks/jiffies since power up. */
-u32_t sys_jiffies(void);
-#endif
-
-/** Returns the current time in milliseconds,
- * may be the same as sys_jiffies or at least based on it. */
-u32_t sys_now(void);
-
-/* Critical Region Protection */
-/* These functions must be implemented in the sys_arch.c file.
- In some implementations they can provide a more light-weight protection
- mechanism than using semaphores. Otherwise semaphores can be used for
- implementation */
-#ifndef SYS_ARCH_PROTECT
-/** SYS_LIGHTWEIGHT_PROT
- * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection
- * for certain critical regions during buffer allocation, deallocation and memory
- * allocation and deallocation.
- */
-#if SYS_LIGHTWEIGHT_PROT
-
-/** SYS_ARCH_DECL_PROTECT
- * declare a protection variable. This macro will default to defining a variable of
- * type sys_prot_t. If a particular port needs a different implementation, then
- * this macro may be defined in sys_arch.h.
- */
-#define SYS_ARCH_DECL_PROTECT(lev) sys_prot_t lev
-/** SYS_ARCH_PROTECT
- * Perform a "fast" protect. This could be implemented by
- * disabling interrupts for an embedded system or by using a semaphore or
- * mutex. The implementation should allow calling SYS_ARCH_PROTECT when
- * already protected. The old protection level is returned in the variable
- * "lev". This macro will default to calling the sys_arch_protect() function
- * which should be implemented in sys_arch.c. If a particular port needs a
- * different implementation, then this macro may be defined in sys_arch.h
- */
-#define SYS_ARCH_PROTECT(lev) lev = sys_arch_protect()
-/** SYS_ARCH_UNPROTECT
- * Perform a "fast" set of the protection level to "lev". This could be
- * implemented by setting the interrupt level to "lev" within the MACRO or by
- * using a semaphore or mutex. This macro will default to calling the
- * sys_arch_unprotect() function which should be implemented in
- * sys_arch.c. If a particular port needs a different implementation, then
- * this macro may be defined in sys_arch.h
- */
-#define SYS_ARCH_UNPROTECT(lev) sys_arch_unprotect(lev)
-sys_prot_t sys_arch_protect(void);
-void sys_arch_unprotect(sys_prot_t pval);
-
-#else
-
-#define SYS_ARCH_DECL_PROTECT(lev)
-#define SYS_ARCH_PROTECT(lev)
-#define SYS_ARCH_UNPROTECT(lev)
-
-#endif /* SYS_LIGHTWEIGHT_PROT */
-
-#endif /* SYS_ARCH_PROTECT */
-
-/*
- * Macros to set/get and increase/decrease variables in a thread-safe way.
- * Use these for accessing variable that are used from more than one thread.
- */
-
-#ifndef SYS_ARCH_INC
-#define SYS_ARCH_INC(var, val) do { \
- SYS_ARCH_DECL_PROTECT(old_level); \
- SYS_ARCH_PROTECT(old_level); \
- var += val; \
- SYS_ARCH_UNPROTECT(old_level); \
- } while(0)
-#endif /* SYS_ARCH_INC */
-
-#ifndef SYS_ARCH_DEC
-#define SYS_ARCH_DEC(var, val) do { \
- SYS_ARCH_DECL_PROTECT(old_level); \
- SYS_ARCH_PROTECT(old_level); \
- var -= val; \
- SYS_ARCH_UNPROTECT(old_level); \
- } while(0)
-#endif /* SYS_ARCH_DEC */
-
-#ifndef SYS_ARCH_GET
-#define SYS_ARCH_GET(var, ret) do { \
- SYS_ARCH_DECL_PROTECT(old_level); \
- SYS_ARCH_PROTECT(old_level); \
- ret = var; \
- SYS_ARCH_UNPROTECT(old_level); \
- } while(0)
-#endif /* SYS_ARCH_GET */
-
-#ifndef SYS_ARCH_SET
-#define SYS_ARCH_SET(var, val) do { \
- SYS_ARCH_DECL_PROTECT(old_level); \
- SYS_ARCH_PROTECT(old_level); \
- var = val; \
- SYS_ARCH_UNPROTECT(old_level); \
- } while(0)
-#endif /* SYS_ARCH_SET */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LWIP_SYS_H__ */
--- a/LPC2368/lwip/include/lwip/tcp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/*
- * 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 __LWIP_TCP_H__
-#define __LWIP_TCP_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/sys.h"
-#include "lwip/mem.h"
-#include "lwip/pbuf.h"
-#include "lwip/ip.h"
-#include "lwip/icmp.h"
-#include "lwip/err.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct tcp_pcb;
-
-/** Function prototype for tcp accept callback functions. Called when a new
- * connection can be accepted on a listening pcb.
- *
- * @param arg Additional argument to pass to the callback function (@see tcp_arg())
- * @param newpcb The new connection pcb
- * @param err An error code if there has been an error accepting.
- * Only return ERR_ABRT if you have called tcp_abort from within the
- * callback function!
- */
-typedef err_t (*tcp_accept_fn)(void *arg, struct tcp_pcb *newpcb, err_t err);
-
-/** Function prototype for tcp receive callback functions. Called when data has
- * been received.
- *
- * @param arg Additional argument to pass to the callback function (@see tcp_arg())
- * @param tpcb The connection pcb which received data
- * @param p The received data (or NULL when the connection has been closed!)
- * @param err An error code if there has been an error receiving
- * Only return ERR_ABRT if you have called tcp_abort from within the
- * callback function!
- */
-typedef err_t (*tcp_recv_fn)(void *arg, struct tcp_pcb *tpcb,
- struct pbuf *p, err_t err);
-
-/** Function prototype for tcp sent callback functions. Called when sent data has
- * been acknowledged by the remote side. Use it to free corresponding resources.
- * This also means that the pcb has now space available to send new data.
- *
- * @param arg Additional argument to pass to the callback function (@see tcp_arg())
- * @param tpcb The connection pcb for which data has been acknowledged
- * @param len The amount of bytes acknowledged
- * @return ERR_OK: try to send some data by calling tcp_output
- * Only return ERR_ABRT if you have called tcp_abort from within the
- * callback function!
- */
-typedef err_t (*tcp_sent_fn)(void *arg, struct tcp_pcb *tpcb,
- u16_t len);
-
-/** Function prototype for tcp poll callback functions. Called periodically as
- * specified by @see tcp_poll.
- *
- * @param arg Additional argument to pass to the callback function (@see tcp_arg())
- * @param tpcb tcp pcb
- * @return ERR_OK: try to send some data by calling tcp_output
- * Only return ERR_ABRT if you have called tcp_abort from within the
- * callback function!
- */
-typedef err_t (*tcp_poll_fn)(void *arg, struct tcp_pcb *tpcb);
-
-/** Function prototype for tcp error callback functions. Called when the pcb
- * receives a RST or is unexpectedly closed for any other reason.
- *
- * @note The corresponding pcb is already freed when this callback is called!
- *
- * @param arg Additional argument to pass to the callback function (@see tcp_arg())
- * @param err Error code to indicate why the pcb has been closed
- * ERR_ABRT: aborted through tcp_abort or by a TCP timer
- * ERR_RST: the connection was reset by the remote host
- */
-typedef void (*tcp_err_fn)(void *arg, err_t err);
-
-/** Function prototype for tcp connected callback functions. Called when a pcb
- * is connected to the remote side after initiating a connection attempt by
- * calling tcp_connect().
- *
- * @param arg Additional argument to pass to the callback function (@see tcp_arg())
- * @param tpcb The connection pcb which is connected
- * @param err An unused error code, always ERR_OK currently ;-) TODO!
- * Only return ERR_ABRT if you have called tcp_abort from within the
- * callback function!
- *
- * @note When a connection attempt fails, the error callback is currently called!
- */
-typedef err_t (*tcp_connected_fn)(void *arg, struct tcp_pcb *tpcb, err_t err);
-
-enum tcp_state {
- CLOSED = 0,
- LISTEN = 1,
- SYN_SENT = 2,
- SYN_RCVD = 3,
- ESTABLISHED = 4,
- FIN_WAIT_1 = 5,
- FIN_WAIT_2 = 6,
- CLOSE_WAIT = 7,
- CLOSING = 8,
- LAST_ACK = 9,
- TIME_WAIT = 10
-};
-
-#if LWIP_CALLBACK_API
- /* Function to call when a listener has been connected.
- * @param arg user-supplied argument (tcp_pcb.callback_arg)
- * @param pcb a new tcp_pcb that now is connected
- * @param err an error argument (TODO: that is current always ERR_OK?)
- * @return ERR_OK: accept the new connection,
- * any other err_t abortsthe new connection
- */
-#define DEF_ACCEPT_CALLBACK tcp_accept_fn accept;
-#else /* LWIP_CALLBACK_API */
-#define DEF_ACCEPT_CALLBACK
-#endif /* LWIP_CALLBACK_API */
-
-/**
- * members common to struct tcp_pcb and struct tcp_listen_pcb
- */
-#define TCP_PCB_COMMON(type) \
- type *next; /* for the linked list */ \
- enum tcp_state state; /* TCP state */ \
- u8_t prio; \
- void *callback_arg; \
- /* the accept callback for listen- and normal pcbs, if LWIP_CALLBACK_API */ \
- DEF_ACCEPT_CALLBACK \
- /* ports are in host byte order */ \
- u16_t local_port
-
-
-/* the TCP protocol control block */
-struct tcp_pcb {
-/** common PCB members */
- IP_PCB;
-/** protocol specific PCB members */
- TCP_PCB_COMMON(struct tcp_pcb);
-
- /* ports are in host byte order */
- u16_t remote_port;
-
- u8_t flags;
-#define TF_ACK_DELAY ((u8_t)0x01U) /* Delayed ACK. */
-#define TF_ACK_NOW ((u8_t)0x02U) /* Immediate ACK. */
-#define TF_INFR ((u8_t)0x04U) /* In fast recovery. */
-#define TF_TIMESTAMP ((u8_t)0x08U) /* Timestamp option enabled */
-#define TF_RXCLOSED ((u8_t)0x10U) /* rx closed by tcp_shutdown */
-#define TF_FIN ((u8_t)0x20U) /* Connection was closed locally (FIN segment enqueued). */
-#define TF_NODELAY ((u8_t)0x40U) /* Disable Nagle algorithm */
-#define TF_NAGLEMEMERR ((u8_t)0x80U) /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */
-
- /* the rest of the fields are in host byte order
- as we have to do some math with them */
- /* receiver variables */
- u32_t rcv_nxt; /* next seqno expected */
- u16_t rcv_wnd; /* receiver window available */
- u16_t rcv_ann_wnd; /* receiver window to announce */
- u32_t rcv_ann_right_edge; /* announced right edge of window */
-
- /* Timers */
- u32_t tmr;
- u8_t polltmr, pollinterval;
-
- /* Retransmission timer. */
- s16_t rtime;
-
- u16_t mss; /* maximum segment size */
-
- /* RTT (round trip time) estimation variables */
- u32_t rttest; /* RTT estimate in 500ms ticks */
- u32_t rtseq; /* sequence number being timed */
- s16_t sa, sv; /* @todo document this */
-
- s16_t rto; /* retransmission time-out */
- u8_t nrtx; /* number of retransmissions */
-
- /* fast retransmit/recovery */
- u32_t lastack; /* Highest acknowledged seqno. */
- u8_t dupacks;
-
- /* congestion avoidance/control variables */
- u16_t cwnd;
- u16_t ssthresh;
-
- /* sender variables */
- u32_t snd_nxt; /* next new seqno to be sent */
- u16_t snd_wnd; /* sender window */
- u32_t snd_wl1, snd_wl2; /* Sequence and acknowledgement numbers of last
- window update. */
- u32_t snd_lbb; /* Sequence number of next byte to be buffered. */
-
- u16_t acked;
-
- u16_t snd_buf; /* Available buffer space for sending (in bytes). */
-#define TCP_SNDQUEUELEN_OVERFLOW (0xffff-3)
- u16_t snd_queuelen; /* Available buffer space for sending (in tcp_segs). */
-
-#if TCP_OVERSIZE
- /* Extra bytes available at the end of the last pbuf in unsent. */
- u16_t unsent_oversize;
-#endif /* TCP_OVERSIZE */
-
- /* These are ordered by sequence number: */
- struct tcp_seg *unsent; /* Unsent (queued) segments. */
- struct tcp_seg *unacked; /* Sent but unacknowledged segments. */
-#if TCP_QUEUE_OOSEQ
- struct tcp_seg *ooseq; /* Received out of sequence segments. */
-#endif /* TCP_QUEUE_OOSEQ */
-
- struct pbuf *refused_data; /* Data previously received but not yet taken by upper layer */
-
-#if LWIP_CALLBACK_API
- /* Function to be called when more send buffer space is available. */
- tcp_sent_fn sent;
- /* Function to be called when (in-sequence) data has arrived. */
- tcp_recv_fn recv;
- /* Function to be called when a connection has been set up. */
- tcp_connected_fn connected;
- /* Function which is called periodically. */
- tcp_poll_fn poll;
- /* Function to be called whenever a fatal error occurs. */
- tcp_err_fn errf;
-#endif /* LWIP_CALLBACK_API */
-
-#if LWIP_TCP_TIMESTAMPS
- u32_t ts_lastacksent;
- u32_t ts_recent;
-#endif /* LWIP_TCP_TIMESTAMPS */
-
- /* idle time before KEEPALIVE is sent */
- u32_t keep_idle;
-#if LWIP_TCP_KEEPALIVE
- u32_t keep_intvl;
- u32_t keep_cnt;
-#endif /* LWIP_TCP_KEEPALIVE */
-
- /* Persist timer counter */
- u32_t persist_cnt;
- /* Persist timer back-off */
- u8_t persist_backoff;
-
- /* KEEPALIVE counter */
- u8_t keep_cnt_sent;
-};
-
-struct tcp_pcb_listen {
-/* Common members of all PCB types */
- IP_PCB;
-/* Protocol specific PCB members */
- TCP_PCB_COMMON(struct tcp_pcb_listen);
-
-#if TCP_LISTEN_BACKLOG
- u8_t backlog;
- u8_t accepts_pending;
-#endif /* TCP_LISTEN_BACKLOG */
-};
-
-#if LWIP_EVENT_API
-
-enum lwip_event {
- LWIP_EVENT_ACCEPT,
- LWIP_EVENT_SENT,
- LWIP_EVENT_RECV,
- LWIP_EVENT_CONNECTED,
- LWIP_EVENT_POLL,
- LWIP_EVENT_ERR
-};
-
-err_t lwip_tcp_event(void *arg, struct tcp_pcb *pcb,
- enum lwip_event,
- struct pbuf *p,
- u16_t size,
- err_t err);
-
-#endif /* LWIP_EVENT_API */
-
-/* Application program's interface: */
-struct tcp_pcb * tcp_new (void);
-
-void tcp_arg (struct tcp_pcb *pcb, void *arg);
-void tcp_accept (struct tcp_pcb *pcb, tcp_accept_fn accept);
-void tcp_recv (struct tcp_pcb *pcb, tcp_recv_fn recv);
-void tcp_sent (struct tcp_pcb *pcb, tcp_sent_fn sent);
-void tcp_poll (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval);
-void tcp_err (struct tcp_pcb *pcb, tcp_err_fn err);
-
-#define tcp_mss(pcb) (((pcb)->flags & TF_TIMESTAMP) ? ((pcb)->mss - 12) : (pcb)->mss)
-#define tcp_sndbuf(pcb) ((pcb)->snd_buf)
-#define tcp_sndqueuelen(pcb) ((pcb)->snd_queuelen)
-#define tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY)
-#define tcp_nagle_enable(pcb) ((pcb)->flags &= ~TF_NODELAY)
-#define tcp_nagle_disabled(pcb) (((pcb)->flags & TF_NODELAY) != 0)
-
-#if TCP_LISTEN_BACKLOG
-#define tcp_accepted(pcb) do { \
- LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", pcb->state == LISTEN); \
- (((struct tcp_pcb_listen *)(pcb))->accepts_pending--); } while(0)
-#else /* TCP_LISTEN_BACKLOG */
-#define tcp_accepted(pcb) LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", \
- pcb->state == LISTEN)
-#endif /* TCP_LISTEN_BACKLOG */
-
-void tcp_recved (struct tcp_pcb *pcb, u16_t len);
-err_t tcp_bind (struct tcp_pcb *pcb, ip_addr_t *ipaddr,
- u16_t port);
-err_t tcp_connect (struct tcp_pcb *pcb, ip_addr_t *ipaddr,
- u16_t port, tcp_connected_fn connected);
-
-struct tcp_pcb * tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog);
-#define tcp_listen(pcb) tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG)
-
-void tcp_abort (struct tcp_pcb *pcb);
-err_t tcp_close (struct tcp_pcb *pcb);
-err_t tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx);
-
-/* Flags for "apiflags" parameter in tcp_write */
-#define TCP_WRITE_FLAG_COPY 0x01
-#define TCP_WRITE_FLAG_MORE 0x02
-
-err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len,
- u8_t apiflags);
-
-void tcp_setprio (struct tcp_pcb *pcb, u8_t prio);
-
-#define TCP_PRIO_MIN 1
-#define TCP_PRIO_NORMAL 64
-#define TCP_PRIO_MAX 127
-
-err_t tcp_output (struct tcp_pcb *pcb);
-
-
-const char* tcp_debug_state_str(enum tcp_state s);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_TCP */
-
-#endif /* __LWIP_TCP_H__ */
--- a/LPC2368/lwip/include/lwip/tcp_impl.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,472 +0,0 @@
-/*
- * 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 __LWIP_TCP_IMPL_H__
-#define __LWIP_TCP_IMPL_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/tcp.h"
-#include "lwip/sys.h"
-#include "lwip/mem.h"
-#include "lwip/pbuf.h"
-#include "lwip/ip.h"
-#include "lwip/icmp.h"
-#include "lwip/err.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Functions for interfacing with TCP: */
-
-/* Lower layer interface to TCP: */
-#define tcp_init() /* Compatibility define, no init needed. */
-void tcp_tmr (void); /* Must be called every
- TCP_TMR_INTERVAL
- ms. (Typically 250 ms). */
-/* It is also possible to call these two functions at the right
- intervals (instead of calling tcp_tmr()). */
-void tcp_slowtmr (void);
-void tcp_fasttmr (void);
-
-
-/* Only used by IP to pass a TCP segment to TCP: */
-void tcp_input (struct pbuf *p, struct netif *inp);
-/* Used within the TCP code only: */
-struct tcp_pcb * tcp_alloc (u8_t prio);
-void tcp_abandon (struct tcp_pcb *pcb, int reset);
-err_t tcp_send_empty_ack(struct tcp_pcb *pcb);
-void tcp_rexmit (struct tcp_pcb *pcb);
-void tcp_rexmit_rto (struct tcp_pcb *pcb);
-void tcp_rexmit_fast (struct tcp_pcb *pcb);
-u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb);
-
-/**
- * This is the Nagle algorithm: try to combine user data to send as few TCP
- * segments as possible. Only send if
- * - no previously transmitted data on the connection remains unacknowledged or
- * - the TF_NODELAY flag is set (nagle algorithm turned off for this pcb) or
- * - the only unsent segment is at least pcb->mss bytes long (or there is more
- * than one unsent segment - with lwIP, this can happen although unsent->len < mss)
- * - or if we are in fast-retransmit (TF_INFR)
- */
-#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \
- ((tpcb)->flags & (TF_NODELAY | TF_INFR)) || \
- (((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \
- ((tpcb)->unsent->len >= (tpcb)->mss))) \
- ) ? 1 : 0)
-#define tcp_output_nagle(tpcb) (tcp_do_output_nagle(tpcb) ? tcp_output(tpcb) : ERR_OK)
-
-
-#define TCP_SEQ_LT(a,b) ((s32_t)((a)-(b)) < 0)
-#define TCP_SEQ_LEQ(a,b) ((s32_t)((a)-(b)) <= 0)
-#define TCP_SEQ_GT(a,b) ((s32_t)((a)-(b)) > 0)
-#define TCP_SEQ_GEQ(a,b) ((s32_t)((a)-(b)) >= 0)
-/* is b<=a<=c? */
-#if 0 /* see bug #10548 */
-#define TCP_SEQ_BETWEEN(a,b,c) ((c)-(b) >= (a)-(b))
-#endif
-#define TCP_SEQ_BETWEEN(a,b,c) (TCP_SEQ_GEQ(a,b) && TCP_SEQ_LEQ(a,c))
-#define TCP_FIN 0x01U
-#define TCP_SYN 0x02U
-#define TCP_RST 0x04U
-#define TCP_PSH 0x08U
-#define TCP_ACK 0x10U
-#define TCP_URG 0x20U
-#define TCP_ECE 0x40U
-#define TCP_CWR 0x80U
-
-#define TCP_FLAGS 0x3fU
-
-/* Length of the TCP header, excluding options. */
-#define TCP_HLEN 20
-
-#ifndef TCP_TMR_INTERVAL
-#define TCP_TMR_INTERVAL 250 /* The TCP timer interval in milliseconds. */
-#endif /* TCP_TMR_INTERVAL */
-
-#ifndef TCP_FAST_INTERVAL
-#define TCP_FAST_INTERVAL TCP_TMR_INTERVAL /* the fine grained timeout in milliseconds */
-#endif /* TCP_FAST_INTERVAL */
-
-#ifndef TCP_SLOW_INTERVAL
-#define TCP_SLOW_INTERVAL (2*TCP_TMR_INTERVAL) /* the coarse grained timeout in milliseconds */
-#endif /* TCP_SLOW_INTERVAL */
-
-#define TCP_FIN_WAIT_TIMEOUT 20000 /* milliseconds */
-#define TCP_SYN_RCVD_TIMEOUT 20000 /* milliseconds */
-
-#define TCP_OOSEQ_TIMEOUT 6U /* x RTO */
-
-#ifndef TCP_MSL
-#define TCP_MSL 60000UL /* The maximum segment lifetime in milliseconds */
-#endif
-
-/* Keepalive values, compliant with RFC 1122. Don't change this unless you know what you're doing */
-#ifndef TCP_KEEPIDLE_DEFAULT
-#define TCP_KEEPIDLE_DEFAULT 7200000UL /* Default KEEPALIVE timer in milliseconds */
-#endif
-
-#ifndef TCP_KEEPINTVL_DEFAULT
-#define TCP_KEEPINTVL_DEFAULT 75000UL /* Default Time between KEEPALIVE probes in milliseconds */
-#endif
-
-#ifndef TCP_KEEPCNT_DEFAULT
-#define TCP_KEEPCNT_DEFAULT 9U /* Default Counter for KEEPALIVE probes */
-#endif
-
-#define TCP_MAXIDLE TCP_KEEPCNT_DEFAULT * TCP_KEEPINTVL_DEFAULT /* Maximum KEEPALIVE probe time */
-
-/* Fields are (of course) in network byte order.
- * Some fields are converted to host byte order in tcp_input().
- */
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct tcp_hdr {
- PACK_STRUCT_FIELD(u16_t src);
- PACK_STRUCT_FIELD(u16_t dest);
- PACK_STRUCT_FIELD(u32_t seqno);
- PACK_STRUCT_FIELD(u32_t ackno);
- PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags);
- PACK_STRUCT_FIELD(u16_t wnd);
- PACK_STRUCT_FIELD(u16_t chksum);
- PACK_STRUCT_FIELD(u16_t urgp);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#define TCPH_OFFSET(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 8)
-#define TCPH_HDRLEN(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 12)
-#define TCPH_FLAGS(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) & TCP_FLAGS)
-
-#define TCPH_OFFSET_SET(phdr, offset) (phdr)->_hdrlen_rsvd_flags = htons(((offset) << 8) | TCPH_FLAGS(phdr))
-#define TCPH_HDRLEN_SET(phdr, len) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | TCPH_FLAGS(phdr))
-#define TCPH_FLAGS_SET(phdr, flags) (phdr)->_hdrlen_rsvd_flags = (((phdr)->_hdrlen_rsvd_flags & PP_HTONS((u16_t)(~(u16_t)(TCP_FLAGS)))) | htons(flags))
-#define TCPH_HDRLEN_FLAGS_SET(phdr, len, flags) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | (flags))
-
-#define TCPH_SET_FLAG(phdr, flags ) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags | htons(flags))
-#define TCPH_UNSET_FLAG(phdr, flags) (phdr)->_hdrlen_rsvd_flags = htons(ntohs((phdr)->_hdrlen_rsvd_flags) | (TCPH_FLAGS(phdr) & ~(flags)) )
-
-#define TCP_TCPLEN(seg) ((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & (TCP_FIN | TCP_SYN)) != 0))
-
-/** Flags used on input processing, not on pcb->flags
-*/
-#define TF_RESET (u8_t)0x08U /* Connection was reset. */
-#define TF_CLOSED (u8_t)0x10U /* Connection was sucessfully closed. */
-#define TF_GOT_FIN (u8_t)0x20U /* Connection was closed by the remote end. */
-
-
-#if LWIP_EVENT_API
-
-#define TCP_EVENT_ACCEPT(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
- LWIP_EVENT_ACCEPT, NULL, 0, err)
-#define TCP_EVENT_SENT(pcb,space,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
- LWIP_EVENT_SENT, NULL, space, ERR_OK)
-#define TCP_EVENT_RECV(pcb,p,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
- LWIP_EVENT_RECV, (p), 0, (err))
-#define TCP_EVENT_CLOSED(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
- LWIP_EVENT_RECV, NULL, 0, ERR_OK)
-#define TCP_EVENT_CONNECTED(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
- LWIP_EVENT_CONNECTED, NULL, 0, (err))
-#define TCP_EVENT_POLL(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\
- LWIP_EVENT_POLL, NULL, 0, ERR_OK)
-#define TCP_EVENT_ERR(errf,arg,err) lwip_tcp_event((arg), NULL, \
- LWIP_EVENT_ERR, NULL, 0, (err))
-
-#else /* LWIP_EVENT_API */
-
-#define TCP_EVENT_ACCEPT(pcb,err,ret) \
- do { \
- if((pcb)->accept != NULL) \
- (ret) = (pcb)->accept((pcb)->callback_arg,(pcb),(err)); \
- else (ret) = ERR_ARG; \
- } while (0)
-
-#define TCP_EVENT_SENT(pcb,space,ret) \
- do { \
- if((pcb)->sent != NULL) \
- (ret) = (pcb)->sent((pcb)->callback_arg,(pcb),(space)); \
- else (ret) = ERR_OK; \
- } while (0)
-
-#define TCP_EVENT_RECV(pcb,p,err,ret) \
- do { \
- if((pcb)->recv != NULL) { \
- (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err));\
- } else { \
- (ret) = tcp_recv_null(NULL, (pcb), (p), (err)); \
- } \
- } while (0)
-
-#define TCP_EVENT_CLOSED(pcb,ret) \
- do { \
- if(((pcb)->recv != NULL)) { \
- (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),NULL,ERR_OK);\
- } else { \
- (ret) = ERR_OK; \
- } \
- } while (0)
-
-#define TCP_EVENT_CONNECTED(pcb,err,ret) \
- do { \
- if((pcb)->connected != NULL) \
- (ret) = (pcb)->connected((pcb)->callback_arg,(pcb),(err)); \
- else (ret) = ERR_OK; \
- } while (0)
-
-#define TCP_EVENT_POLL(pcb,ret) \
- do { \
- if((pcb)->poll != NULL) \
- (ret) = (pcb)->poll((pcb)->callback_arg,(pcb)); \
- else (ret) = ERR_OK; \
- } while (0)
-
-#define TCP_EVENT_ERR(errf,arg,err) \
- do { \
- if((errf) != NULL) \
- (errf)((arg),(err)); \
- } while (0)
-
-#endif /* LWIP_EVENT_API */
-
-/** Enabled extra-check for TCP_OVERSIZE if LWIP_DEBUG is enabled */
-#if TCP_OVERSIZE && defined(LWIP_DEBUG)
-#define TCP_OVERSIZE_DBGCHECK 1
-#else
-#define TCP_OVERSIZE_DBGCHECK 0
-#endif
-
-/** Don't generate checksum on copy if CHECKSUM_GEN_TCP is disabled */
-#define TCP_CHECKSUM_ON_COPY (LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_TCP)
-
-/* This structure represents a TCP segment on the unsent, unacked and ooseq queues */
-struct tcp_seg {
- struct tcp_seg *next; /* used when putting segements on a queue */
- struct pbuf *p; /* buffer containing data + TCP header */
- void *dataptr; /* pointer to the TCP data in the pbuf */
- u16_t len; /* the TCP length of this segment */
-#if TCP_OVERSIZE_DBGCHECK
- u16_t oversize_left; /* Extra bytes available at the end of the last
- pbuf in unsent (used for asserting vs.
- tcp_pcb.unsent_oversized only) */
-#endif /* TCP_OVERSIZE_DBGCHECK */
-#if TCP_CHECKSUM_ON_COPY
- u16_t chksum;
- u8_t chksum_swapped;
-#endif /* TCP_CHECKSUM_ON_COPY */
- u8_t flags;
-#define TF_SEG_OPTS_MSS (u8_t)0x01U /* Include MSS option. */
-#define TF_SEG_OPTS_TS (u8_t)0x02U /* Include timestamp option. */
-#define TF_SEG_DATA_CHECKSUMMED (u8_t)0x04U /* ALL data (not the header) is
- checksummed into 'chksum' */
- struct tcp_hdr *tcphdr; /* the TCP header */
-};
-
-#define LWIP_TCP_OPT_LENGTH(flags) \
- (flags & TF_SEG_OPTS_MSS ? 4 : 0) + \
- (flags & TF_SEG_OPTS_TS ? 12 : 0)
-
-/** This returns a TCP header option for MSS in an u32_t */
-#define TCP_BUILD_MSS_OPTION(x) (x) = PP_HTONL(((u32_t)2 << 24) | \
- ((u32_t)4 << 16) | \
- (((u32_t)TCP_MSS / 256) << 8) | \
- (TCP_MSS & 255))
-
-/* Global variables: */
-extern struct tcp_pcb *tcp_input_pcb;
-extern u32_t tcp_ticks;
-
-/* The TCP PCB lists. */
-union tcp_listen_pcbs_t { /* List of all TCP PCBs in LISTEN state. */
- struct tcp_pcb_listen *listen_pcbs;
- struct tcp_pcb *pcbs;
-};
-extern struct tcp_pcb *tcp_bound_pcbs;
-extern union tcp_listen_pcbs_t tcp_listen_pcbs;
-extern struct tcp_pcb *tcp_active_pcbs; /* List of all TCP PCBs that are in a
- state in which they accept or send
- data. */
-extern struct tcp_pcb *tcp_tw_pcbs; /* List of all TCP PCBs in TIME-WAIT. */
-
-extern struct tcp_pcb *tcp_tmp_pcb; /* Only used for temporary storage. */
-
-/* Axioms about the above lists:
- 1) Every TCP PCB that is not CLOSED is in one of the lists.
- 2) A PCB is only in one of the lists.
- 3) All PCBs in the tcp_listen_pcbs list is in LISTEN state.
- 4) All PCBs in the tcp_tw_pcbs list is in TIME-WAIT state.
-*/
-/* Define two macros, TCP_REG and TCP_RMV that registers a TCP PCB
- with a PCB list or removes a PCB from a list, respectively. */
-#ifndef TCP_DEBUG_PCB_LISTS
-#define TCP_DEBUG_PCB_LISTS 0
-#endif
-#if TCP_DEBUG_PCB_LISTS
-#define TCP_REG(pcbs, npcb) do {\
- LWIP_DEBUGF(TCP_DEBUG, ("TCP_REG %p local port %d\n", (npcb), (npcb)->local_port)); \
- for(tcp_tmp_pcb = *(pcbs); \
- tcp_tmp_pcb != NULL; \
- tcp_tmp_pcb = tcp_tmp_pcb->next) { \
- LWIP_ASSERT("TCP_REG: already registered\n", tcp_tmp_pcb != (npcb)); \
- } \
- LWIP_ASSERT("TCP_REG: pcb->state != CLOSED", ((pcbs) == &tcp_bound_pcbs) || ((npcb)->state != CLOSED)); \
- (npcb)->next = *(pcbs); \
- LWIP_ASSERT("TCP_REG: npcb->next != npcb", (npcb)->next != (npcb)); \
- *(pcbs) = (npcb); \
- LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \
- tcp_timer_needed(); \
- } while(0)
-#define TCP_RMV(pcbs, npcb) do { \
- LWIP_ASSERT("TCP_RMV: pcbs != NULL", *(pcbs) != NULL); \
- LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removing %p from %p\n", (npcb), *(pcbs))); \
- if(*(pcbs) == (npcb)) { \
- *(pcbs) = (*pcbs)->next; \
- } else for(tcp_tmp_pcb = *(pcbs); tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \
- if(tcp_tmp_pcb->next == (npcb)) { \
- tcp_tmp_pcb->next = (npcb)->next; \
- break; \
- } \
- } \
- (npcb)->next = NULL; \
- LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \
- LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removed %p from %p\n", (npcb), *(pcbs))); \
- } while(0)
-
-#else /* LWIP_DEBUG */
-
-#define TCP_REG(pcbs, npcb) \
- do { \
- (npcb)->next = *pcbs; \
- *(pcbs) = (npcb); \
- tcp_timer_needed(); \
- } while (0)
-
-#define TCP_RMV(pcbs, npcb) \
- do { \
- if(*(pcbs) == (npcb)) { \
- (*(pcbs)) = (*pcbs)->next; \
- } \
- else { \
- for(tcp_tmp_pcb = *pcbs; \
- tcp_tmp_pcb != NULL; \
- tcp_tmp_pcb = tcp_tmp_pcb->next) { \
- if(tcp_tmp_pcb->next == (npcb)) { \
- tcp_tmp_pcb->next = (npcb)->next; \
- break; \
- } \
- } \
- } \
- (npcb)->next = NULL; \
- } while(0)
-
-#endif /* LWIP_DEBUG */
-
-
-/* Internal functions: */
-struct tcp_pcb *tcp_pcb_copy(struct tcp_pcb *pcb);
-void tcp_pcb_purge(struct tcp_pcb *pcb);
-void tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb);
-
-void tcp_segs_free(struct tcp_seg *seg);
-void tcp_seg_free(struct tcp_seg *seg);
-struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg);
-
-#define tcp_ack(pcb) \
- do { \
- if((pcb)->flags & TF_ACK_DELAY) { \
- (pcb)->flags &= ~TF_ACK_DELAY; \
- (pcb)->flags |= TF_ACK_NOW; \
- } \
- else { \
- (pcb)->flags |= TF_ACK_DELAY; \
- } \
- } while (0)
-
-#define tcp_ack_now(pcb) \
- do { \
- (pcb)->flags |= TF_ACK_NOW; \
- } while (0)
-
-err_t tcp_send_fin(struct tcp_pcb *pcb);
-err_t tcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags);
-
-void tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg);
-
-void tcp_rst(u32_t seqno, u32_t ackno,
- ip_addr_t *local_ip, ip_addr_t *remote_ip,
- u16_t local_port, u16_t remote_port);
-
-u32_t tcp_next_iss(void);
-
-void tcp_keepalive(struct tcp_pcb *pcb);
-void tcp_zero_window_probe(struct tcp_pcb *pcb);
-
-#if TCP_CALCULATE_EFF_SEND_MSS
-u16_t tcp_eff_send_mss(u16_t sendmss, ip_addr_t *addr);
-#endif /* TCP_CALCULATE_EFF_SEND_MSS */
-
-#if LWIP_CALLBACK_API
-err_t tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err);
-#endif /* LWIP_CALLBACK_API */
-
-#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG
-void tcp_debug_print(struct tcp_hdr *tcphdr);
-void tcp_debug_print_flags(u8_t flags);
-void tcp_debug_print_state(enum tcp_state s);
-void tcp_debug_print_pcbs(void);
-s16_t tcp_pcbs_sane(void);
-#else
-# define tcp_debug_print(tcphdr)
-# define tcp_debug_print_flags(flags)
-# define tcp_debug_print_state(s)
-# define tcp_debug_print_pcbs()
-# define tcp_pcbs_sane() 1
-#endif /* TCP_DEBUG */
-
-/** External function (implemented in timers.c), called when TCP detects
- * that a timer is needed (i.e. active- or time-wait-pcb found). */
-void tcp_timer_needed(void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_TCP */
-
-#endif /* __LWIP_TCP_H__ */
--- a/LPC2368/lwip/include/lwip/tcpip.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- * 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 __LWIP_TCPIP_H__
-#define __LWIP_TCPIP_H__
-
-#include "lwip/opt.h"
-
-#if !NO_SYS /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/api_msg.h"
-#include "lwip/netifapi.h"
-#include "lwip/pbuf.h"
-#include "lwip/api.h"
-#include "lwip/sys.h"
-#include "lwip/timers.h"
-#include "lwip/netif.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Define this to something that triggers a watchdog. This is called from
- * tcpip_thread after processing a message. */
-#ifndef LWIP_TCPIP_THREAD_ALIVE
-#define LWIP_TCPIP_THREAD_ALIVE()
-#endif
-
-#if LWIP_TCPIP_CORE_LOCKING
-/** The global semaphore to lock the stack. */
-extern sys_mutex_t lock_tcpip_core;
-#define LOCK_TCPIP_CORE() sys_mutex_lock(&lock_tcpip_core)
-#define UNLOCK_TCPIP_CORE() sys_mutex_unlock(&lock_tcpip_core)
-#define TCPIP_APIMSG(m) tcpip_apimsg_lock(m)
-#define TCPIP_APIMSG_ACK(m)
-#define TCPIP_NETIFAPI(m) tcpip_netifapi_lock(m)
-#define TCPIP_NETIFAPI_ACK(m)
-#else /* LWIP_TCPIP_CORE_LOCKING */
-#define LOCK_TCPIP_CORE()
-#define UNLOCK_TCPIP_CORE()
-#define TCPIP_APIMSG(m) tcpip_apimsg(m)
-#define TCPIP_APIMSG_ACK(m) sys_sem_signal(&m->conn->op_completed)
-#define TCPIP_NETIFAPI(m) tcpip_netifapi(m)
-#define TCPIP_NETIFAPI_ACK(m) sys_sem_signal(&m->sem)
-#endif /* LWIP_TCPIP_CORE_LOCKING */
-
-/** Function prototype for the init_done function passed to tcpip_init */
-typedef void (*tcpip_init_done_fn)(void *arg);
-/** Function prototype for functions passed to tcpip_callback() */
-typedef void (*tcpip_callback_fn)(void *ctx);
-
-void tcpip_init(tcpip_init_done_fn tcpip_init_done, void *arg);
-
-#if LWIP_NETCONN
-err_t tcpip_apimsg(struct api_msg *apimsg);
-#if LWIP_TCPIP_CORE_LOCKING
-err_t tcpip_apimsg_lock(struct api_msg *apimsg);
-#endif /* LWIP_TCPIP_CORE_LOCKING */
-#endif /* LWIP_NETCONN */
-
-err_t tcpip_input(struct pbuf *p, struct netif *inp);
-
-#if LWIP_NETIF_API
-err_t tcpip_netifapi(struct netifapi_msg *netifapimsg);
-#if LWIP_TCPIP_CORE_LOCKING
-err_t tcpip_netifapi_lock(struct netifapi_msg *netifapimsg);
-#endif /* LWIP_TCPIP_CORE_LOCKING */
-#endif /* LWIP_NETIF_API */
-
-err_t tcpip_callback_with_block(tcpip_callback_fn function, void *ctx, u8_t block);
-#define tcpip_callback(f, ctx) tcpip_callback_with_block(f, ctx, 1)
-
-/* free pbufs or heap memory from another context without blocking */
-err_t pbuf_free_callback(struct pbuf *p);
-err_t mem_free_callback(void *m);
-
-#if LWIP_TCPIP_TIMEOUT
-err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg);
-err_t tcpip_untimeout(sys_timeout_handler h, void *arg);
-#endif /* LWIP_TCPIP_TIMEOUT */
-
-enum tcpip_msg_type {
-#if LWIP_NETCONN
- TCPIP_MSG_API,
-#endif /* LWIP_NETCONN */
- TCPIP_MSG_INPKT,
-#if LWIP_NETIF_API
- TCPIP_MSG_NETIFAPI,
-#endif /* LWIP_NETIF_API */
-#if LWIP_TCPIP_TIMEOUT
- TCPIP_MSG_TIMEOUT,
- TCPIP_MSG_UNTIMEOUT,
-#endif /* LWIP_TCPIP_TIMEOUT */
- TCPIP_MSG_CALLBACK
-};
-
-struct tcpip_msg {
- enum tcpip_msg_type type;
- sys_sem_t *sem;
- union {
-#if LWIP_NETCONN
- struct api_msg *apimsg;
-#endif /* LWIP_NETCONN */
-#if LWIP_NETIF_API
- struct netifapi_msg *netifapimsg;
-#endif /* LWIP_NETIF_API */
- struct {
- struct pbuf *p;
- struct netif *netif;
- } inp;
- struct {
- tcpip_callback_fn function;
- void *ctx;
- } cb;
-#if LWIP_TCPIP_TIMEOUT
- struct {
- u32_t msecs;
- sys_timeout_handler h;
- void *arg;
- } tmo;
-#endif /* LWIP_TCPIP_TIMEOUT */
- } msg;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !NO_SYS */
-
-#endif /* __LWIP_TCPIP_H__ */
--- a/LPC2368/lwip/include/lwip/timers.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * 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>
- * Simon Goldschmidt
- *
- */
-#ifndef __LWIP_TIMERS_H__
-#define __LWIP_TIMERS_H__
-
-#include "lwip/opt.h"
-
-/* Timers are not supported when NO_SYS==1 and NO_SYS_NO_TIMERS==1 */
-#define LWIP_TIMERS (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS))
-
-#if LWIP_TIMERS
-
-#include "lwip/err.h"
-#include "lwip/sys.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef LWIP_DEBUG_TIMERNAMES
-#ifdef LWIP_DEBUG
-#define LWIP_DEBUG_TIMERNAMES SYS_DEBUG
-#else /* LWIP_DEBUG */
-#define LWIP_DEBUG_TIMERNAMES 0
-#endif /* LWIP_DEBUG*/
-#endif
-
-/** Function prototype for a timeout callback function. Register such a function
- * using sys_timeout().
- *
- * @param arg Additional argument to pass to the function - set up by sys_timeout()
- */
-typedef void (* sys_timeout_handler)(void *arg);
-
-struct sys_timeo {
- struct sys_timeo *next;
- u32_t time;
- sys_timeout_handler h;
- void *arg;
-#if LWIP_DEBUG_TIMERNAMES
- const char* handler_name;
-#endif /* LWIP_DEBUG_TIMERNAMES */
-};
-
-void sys_timeouts_init(void);
-
-#if LWIP_DEBUG_TIMERNAMES
-void sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char* handler_name);
-#define sys_timeout(msecs, handler, arg) sys_timeout_debug(msecs, handler, arg, #handler)
-#else /* LWIP_DEBUG_TIMERNAMES */
-void sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg);
-#endif /* LWIP_DEBUG_TIMERNAMES */
-
-void sys_untimeout(sys_timeout_handler handler, void *arg);
-#if NO_SYS
-void sys_check_timeouts(void);
-void sys_restart_timeouts(void);
-#else /* NO_SYS */
-void sys_timeouts_mbox_fetch(sys_mbox_t *mbox, void **msg);
-#endif /* NO_SYS */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_TIMERS */
-#endif /* __LWIP_TIMERS_H__ */
--- a/LPC2368/lwip/include/lwip/udp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
- * 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 __LWIP_UDP_H__
-#define __LWIP_UDP_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/pbuf.h"
-#include "lwip/netif.h"
-#include "lwip/ip_addr.h"
-#include "lwip/ip.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define UDP_HLEN 8
-
-/* Fields are (of course) in network byte order. */
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct udp_hdr {
- PACK_STRUCT_FIELD(u16_t src);
- PACK_STRUCT_FIELD(u16_t dest); /* src/dest UDP ports */
- PACK_STRUCT_FIELD(u16_t len);
- PACK_STRUCT_FIELD(u16_t chksum);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#define UDP_FLAGS_NOCHKSUM 0x01U
-#define UDP_FLAGS_UDPLITE 0x02U
-#define UDP_FLAGS_CONNECTED 0x04U
-#define UDP_FLAGS_MULTICAST_LOOP 0x08U
-
-struct udp_pcb;
-
-/** Function prototype for udp pcb receive callback functions
- * addr and port are in same byte order as in the pcb
- * The callback is responsible for freeing the pbuf
- * if it's not used any more.
- *
- * ATTENTION: Be aware that 'addr' points into the pbuf 'p' so freeing this pbuf
- * makes 'addr' invalid, too.
- *
- * @param arg user supplied argument (udp_pcb.recv_arg)
- * @param pcb the udp_pcb which received data
- * @param p the packet buffer that was received
- * @param addr the remote IP address from which the packet was received
- * @param port the remote port from which the packet was received
- */
-typedef void (*udp_recv_fn)(void *arg, struct udp_pcb *pcb, struct pbuf *p,
- ip_addr_t *addr, u16_t port);
-
-
-struct udp_pcb {
-/* Common members of all PCB types */
- IP_PCB;
-
-/* Protocol specific PCB members */
-
- struct udp_pcb *next;
-
- u8_t flags;
- /** ports are in host byte order */
- u16_t local_port, remote_port;
-
-#if LWIP_IGMP
- /** outgoing network interface for multicast packets */
- ip_addr_t multicast_ip;
-#endif /* LWIP_IGMP */
-
-#if LWIP_UDPLITE
- /** used for UDP_LITE only */
- u16_t chksum_len_rx, chksum_len_tx;
-#endif /* LWIP_UDPLITE */
-
- /** receive callback function */
- udp_recv_fn recv;
- /** user-supplied argument for the recv callback */
- void *recv_arg;
-};
-/* udp_pcbs export for exernal reference (e.g. SNMP agent) */
-extern struct udp_pcb *udp_pcbs;
-
-/* The following functions is the application layer interface to the
- UDP code. */
-struct udp_pcb * udp_new (void);
-void udp_remove (struct udp_pcb *pcb);
-err_t udp_bind (struct udp_pcb *pcb, ip_addr_t *ipaddr,
- u16_t port);
-err_t udp_connect (struct udp_pcb *pcb, ip_addr_t *ipaddr,
- u16_t port);
-void udp_disconnect (struct udp_pcb *pcb);
-void udp_recv (struct udp_pcb *pcb, udp_recv_fn recv,
- void *recv_arg);
-err_t udp_sendto_if (struct udp_pcb *pcb, struct pbuf *p,
- ip_addr_t *dst_ip, u16_t dst_port,
- struct netif *netif);
-err_t udp_sendto (struct udp_pcb *pcb, struct pbuf *p,
- ip_addr_t *dst_ip, u16_t dst_port);
-err_t udp_send (struct udp_pcb *pcb, struct pbuf *p);
-
-#if LWIP_CHECKSUM_ON_COPY
-err_t udp_sendto_if_chksum(struct udp_pcb *pcb, struct pbuf *p,
- ip_addr_t *dst_ip, u16_t dst_port,
- struct netif *netif, u8_t have_chksum,
- u16_t chksum);
-err_t udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p,
- ip_addr_t *dst_ip, u16_t dst_port,
- u8_t have_chksum, u16_t chksum);
-err_t udp_send_chksum(struct udp_pcb *pcb, struct pbuf *p,
- u8_t have_chksum, u16_t chksum);
-#endif /* LWIP_CHECKSUM_ON_COPY */
-
-#define udp_flags(pcb) ((pcb)->flags)
-#define udp_setflags(pcb, f) ((pcb)->flags = (f))
-
-/* The following functions are the lower layer interface to UDP. */
-void udp_input (struct pbuf *p, struct netif *inp);
-
-#define udp_init() /* Compatibility define, not init needed. */
-
-#if UDP_DEBUG
-void udp_debug_print(struct udp_hdr *udphdr);
-#else
-#define udp_debug_print(udphdr)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_UDP */
-
-#endif /* __LWIP_UDP_H__ */
--- a/LPC2368/lwip/include/netif/etharp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
- * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
- * Copyright (c) 2003-2004 Leon Woestenberg <leon.woestenberg@axon.tv>
- * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands.
- * 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 __NETIF_ETHARP_H__
-#define __NETIF_ETHARP_H__
-
-#include "lwip/opt.h"
-
-#if LWIP_ARP || LWIP_ETHERNET /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/pbuf.h"
-#include "lwip/ip_addr.h"
-#include "lwip/netif.h"
-#include "lwip/ip.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef ETHARP_HWADDR_LEN
-#define ETHARP_HWADDR_LEN 6
-#endif
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct eth_addr {
- PACK_STRUCT_FIELD(u8_t addr[ETHARP_HWADDR_LEN]);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-/* Ethernet header */
-struct eth_hdr {
-#if ETH_PAD_SIZE
- PACK_STRUCT_FIELD(u8_t padding[ETH_PAD_SIZE]);
-#endif
- PACK_STRUCT_FIELD(struct eth_addr dest);
- PACK_STRUCT_FIELD(struct eth_addr src);
- PACK_STRUCT_FIELD(u16_t type);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE)
-
-#if ETHARP_SUPPORT_VLAN
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-/* VLAN header inserted between ethernet header and payload
- * if 'type' in ethernet header is ETHTYPE_VLAN.
- * See IEEE802.Q */
-struct eth_vlan_hdr {
- PACK_STRUCT_FIELD(u16_t tpid);
- PACK_STRUCT_FIELD(u16_t prio_vid);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#define SIZEOF_VLAN_HDR 4
-#define VLAN_ID(vlan_hdr) (htons((vlan_hdr)->prio_vid) & 0xFFF)
-
-#endif /* ETHARP_SUPPORT_VLAN */
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-/* the ARP message, see RFC 826 ("Packet format") */
-struct etharp_hdr {
- PACK_STRUCT_FIELD(u16_t hwtype);
- PACK_STRUCT_FIELD(u16_t proto);
- PACK_STRUCT_FIELD(u8_t hwlen);
- PACK_STRUCT_FIELD(u8_t protolen);
- PACK_STRUCT_FIELD(u16_t opcode);
- PACK_STRUCT_FIELD(struct eth_addr shwaddr);
- PACK_STRUCT_FIELD(struct ip_addr2 sipaddr);
- PACK_STRUCT_FIELD(struct eth_addr dhwaddr);
- PACK_STRUCT_FIELD(struct ip_addr2 dipaddr);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#define SIZEOF_ETHARP_HDR 28
-#define SIZEOF_ETHARP_PACKET (SIZEOF_ETH_HDR + SIZEOF_ETHARP_HDR)
-
-/* 5 seconds period */
-#define ARP_TMR_INTERVAL 5000
-
-#define ETHTYPE_ARP 0x0806
-#define ETHTYPE_IP 0x0800
-#define ETHTYPE_VLAN 0x8100
-#define ETHTYPE_PPPOEDISC 0x8863 /* PPP Over Ethernet Discovery Stage */
-#define ETHTYPE_PPPOE 0x8864 /* PPP Over Ethernet Session Stage */
-
-/* MEMCPY-like macro to copy to/from struct eth_addr's that are local variables
- * or known to be 32-bit aligned within the protocol header. */
-#ifndef ETHADDR32_COPY
-#define ETHADDR32_COPY(src, dst) SMEMCPY(src, dst, ETHARP_HWADDR_LEN)
-#endif
-
-/* MEMCPY-like macro to copy to/from struct eth_addr's that are no local
- * variables and known to be 16-bit aligned within the protocol header. */
-#ifndef ETHADDR16_COPY
-#define ETHADDR16_COPY(src, dst) SMEMCPY(src, dst, ETHARP_HWADDR_LEN)
-#endif
-
-#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */
-
-/* ARP message types (opcodes) */
-#define ARP_REQUEST 1
-#define ARP_REPLY 2
-
-/* Define this to 1 and define LWIP_ARP_FILTER_NETIF_FN(pbuf, netif, type)
- * to a filter function that returns the correct netif when using multiple
- * netifs on one hardware interface where the netif's low-level receive
- * routine cannot decide for the correct netif (e.g. when mapping multiple
- * IP addresses to one hardware interface).
- */
-#ifndef LWIP_ARP_FILTER_NETIF
-#define LWIP_ARP_FILTER_NETIF 0
-#endif
-
-#if ARP_QUEUEING
-/* struct for queueing outgoing packets for unknown address
- * defined here to be accessed by memp.h
- */
-struct etharp_q_entry {
- struct etharp_q_entry *next;
- struct pbuf *p;
-};
-#endif /* ARP_QUEUEING */
-
-#define etharp_init() /* Compatibility define, not init needed. */
-void etharp_tmr(void);
-s8_t etharp_find_addr(struct netif *netif, ip_addr_t *ipaddr,
- struct eth_addr **eth_ret, ip_addr_t **ip_ret);
-err_t etharp_output(struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr);
-err_t etharp_query(struct netif *netif, ip_addr_t *ipaddr, struct pbuf *q);
-err_t etharp_request(struct netif *netif, ip_addr_t *ipaddr);
-/* For Ethernet network interfaces, we might want to send "gratuitous ARP";
- * this is an ARP packet sent by a node in order to spontaneously cause other
- * nodes to update an entry in their ARP cache.
- * From RFC 3220 "IP Mobility Support for IPv4" section 4.6. */
-#define etharp_gratuitous(netif) etharp_request((netif), &(netif)->ip_addr)
-
-#if ETHARP_SUPPORT_STATIC_ENTRIES
-err_t etharp_add_static_entry(ip_addr_t *ipaddr, struct eth_addr *ethaddr);
-err_t etharp_remove_static_entry(ip_addr_t *ipaddr);
-#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */
-
-#if LWIP_AUTOIP
-err_t etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr,
- const struct eth_addr *ethdst_addr,
- const struct eth_addr *hwsrc_addr, const ip_addr_t *ipsrc_addr,
- const struct eth_addr *hwdst_addr, const ip_addr_t *ipdst_addr,
- const u16_t opcode);
-#endif /* LWIP_AUTOIP */
-
-#endif /* LWIP_ARP */
-
-err_t ethernet_input(struct pbuf *p, struct netif *netif);
-
-#define eth_addr_cmp(addr1, addr2) (memcmp((addr1)->addr, (addr2)->addr, ETHARP_HWADDR_LEN) == 0)
-
-extern const struct eth_addr ethbroadcast, ethzero;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LWIP_ARP || LWIP_ETHERNET */
-
-#endif /* __NETIF_ARP_H__ */
--- a/LPC2368/lwip/include/netif/ppp_oe.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*****************************************************************************
-* ppp_oe.h - PPP Over Ethernet implementation for lwIP.
-*
-* Copyright (c) 2006 by Marc Boucher, Services Informatiques (MBSI) inc.
-*
-* The authors hereby grant permission to use, copy, modify, distribute,
-* and license this software and its documentation for any purpose, provided
-* that existing copyright notices are retained in all copies and that this
-* notice and the following disclaimer are included verbatim in any
-* distributions. No written agreement, license, or royalty fee is required
-* for any of the authorized uses.
-*
-* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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.
-*
-******************************************************************************
-* REVISION HISTORY
-*
-* 06-01-01 Marc Boucher <marc@mbsi.ca>
-* Ported to lwIP.
-*****************************************************************************/
-
-
-
-/* based on NetBSD: if_pppoe.c,v 1.64 2006/01/31 23:50:15 martin Exp */
-
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * 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. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``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 FOUNDATION OR CONTRIBUTORS
- * 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.
- */
-#ifndef PPP_OE_H
-#define PPP_OE_H
-
-#include "lwip/opt.h"
-
-#if PPPOE_SUPPORT > 0
-
-#include "netif/etharp.h"
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct pppoehdr {
- PACK_STRUCT_FIELD(u8_t vertype);
- PACK_STRUCT_FIELD(u8_t code);
- PACK_STRUCT_FIELD(u16_t session);
- PACK_STRUCT_FIELD(u16_t plen);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/bpstruct.h"
-#endif
-PACK_STRUCT_BEGIN
-struct pppoetag {
- PACK_STRUCT_FIELD(u16_t tag);
- PACK_STRUCT_FIELD(u16_t len);
-} PACK_STRUCT_STRUCT;
-PACK_STRUCT_END
-#ifdef PACK_STRUCT_USE_INCLUDES
-# include "arch/epstruct.h"
-#endif
-
-
-#define PPPOE_STATE_INITIAL 0
-#define PPPOE_STATE_PADI_SENT 1
-#define PPPOE_STATE_PADR_SENT 2
-#define PPPOE_STATE_SESSION 3
-#define PPPOE_STATE_CLOSING 4
-/* passive */
-#define PPPOE_STATE_PADO_SENT 1
-
-#define PPPOE_HEADERLEN sizeof(struct pppoehdr)
-#define PPPOE_VERTYPE 0x11 /* VER=1, TYPE = 1 */
-
-#define PPPOE_TAG_EOL 0x0000 /* end of list */
-#define PPPOE_TAG_SNAME 0x0101 /* service name */
-#define PPPOE_TAG_ACNAME 0x0102 /* access concentrator name */
-#define PPPOE_TAG_HUNIQUE 0x0103 /* host unique */
-#define PPPOE_TAG_ACCOOKIE 0x0104 /* AC cookie */
-#define PPPOE_TAG_VENDOR 0x0105 /* vendor specific */
-#define PPPOE_TAG_RELAYSID 0x0110 /* relay session id */
-#define PPPOE_TAG_SNAME_ERR 0x0201 /* service name error */
-#define PPPOE_TAG_ACSYS_ERR 0x0202 /* AC system error */
-#define PPPOE_TAG_GENERIC_ERR 0x0203 /* gerneric error */
-
-#define PPPOE_CODE_PADI 0x09 /* Active Discovery Initiation */
-#define PPPOE_CODE_PADO 0x07 /* Active Discovery Offer */
-#define PPPOE_CODE_PADR 0x19 /* Active Discovery Request */
-#define PPPOE_CODE_PADS 0x65 /* Active Discovery Session confirmation */
-#define PPPOE_CODE_PADT 0xA7 /* Active Discovery Terminate */
-
-#ifndef ETHERMTU
-#define ETHERMTU 1500
-#endif
-
-/* two byte PPP protocol discriminator, then IP data */
-#define PPPOE_MAXMTU (ETHERMTU-PPPOE_HEADERLEN-2)
-
-#ifndef PPPOE_MAX_AC_COOKIE_LEN
-#define PPPOE_MAX_AC_COOKIE_LEN 64
-#endif
-
-struct pppoe_softc {
- struct pppoe_softc *next;
- struct netif *sc_ethif; /* ethernet interface we are using */
- int sc_pd; /* ppp unit number */
- void (*sc_linkStatusCB)(int pd, int up);
-
- int sc_state; /* discovery phase or session connected */
- struct eth_addr sc_dest; /* hardware address of concentrator */
- u16_t sc_session; /* PPPoE session id */
-
-#ifdef PPPOE_TODO
- char *sc_service_name; /* if != NULL: requested name of service */
- char *sc_concentrator_name; /* if != NULL: requested concentrator id */
-#endif /* PPPOE_TODO */
- u8_t sc_ac_cookie[PPPOE_MAX_AC_COOKIE_LEN]; /* content of AC cookie we must echo back */
- size_t sc_ac_cookie_len; /* length of cookie data */
-#ifdef PPPOE_SERVER
- u8_t *sc_hunique; /* content of host unique we must echo back */
- size_t sc_hunique_len; /* length of host unique */
-#endif
- int sc_padi_retried; /* number of PADI retries already done */
- int sc_padr_retried; /* number of PADR retries already done */
-};
-
-
-#define pppoe_init() /* compatibility define, no initialization needed */
-
-err_t pppoe_create(struct netif *ethif, int pd, void (*linkStatusCB)(int pd, int up), struct pppoe_softc **scptr);
-err_t pppoe_destroy(struct netif *ifp);
-
-int pppoe_connect(struct pppoe_softc *sc);
-void pppoe_disconnect(struct pppoe_softc *sc);
-
-void pppoe_disc_input(struct netif *netif, struct pbuf *p);
-void pppoe_data_input(struct netif *netif, struct pbuf *p);
-
-err_t pppoe_xmit(struct pppoe_softc *sc, struct pbuf *pb);
-
-/** used in ppp.c */
-#define PPPOE_HDRLEN (sizeof(struct eth_hdr) + PPPOE_HEADERLEN)
-
-#endif /* PPPOE_SUPPORT */
-
-#endif /* PPP_OE_H */
--- a/LPC2368/lwip/include/netif/slipif.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2001, 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. Neither the name of the Institute nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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 __NETIF_SLIPIF_H__
-#define __NETIF_SLIPIF_H__
-
-#include "lwip/netif.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-err_t slipif_init(struct netif * netif);
-void slipif_poll(struct netif *netif);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
--- a/LPC2368/lwip/lwipopts.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,462 +0,0 @@
-/*
- * 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.
- *
- * This file is part of the lwIP TCP/IP stack.
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- */
-#ifndef __LWIPOPTS_H__
-#define __LWIPOPTS_H__
-
-#include "netCfg.h"
-#if NET_LWIP_STACK
-
-//#include "arch/sys_arch.h"
-
-/* <sys/time.h> is included in cc.h! */
-#define LWIP_TIMEVAL_PRIVATE 0
-
-//#define __LWIP_DEBUG
-#include "dbg/dbg.h"
-
-#ifdef __LWIP_DEBUG
-
-#define LWIP_DEBUG 1
-
-#define LWIP_DBG_MIN_LEVEL 0
-//#define LWIP_COMPAT_SOCKETS 1
-#define TAPIF_DEBUG LWIP_DBG_OFF
-#define TUNIF_DEBUG LWIP_DBG_OFF
-#define UNIXIF_DEBUG LWIP_DBG_OFF
-#define DELIF_DEBUG LWIP_DBG_OFF
-#define SIO_FIFO_DEBUG LWIP_DBG_ON
-#define TCPDUMP_DEBUG LWIP_DBG_ON
-
-#define PPP_DEBUG LWIP_DBG_OFF
-#define MEM_DEBUG LWIP_DBG_OFF
-#define MEMP_DEBUG LWIP_DBG_OFF
-#define PBUF_DEBUG LWIP_DBG_OFF
-#define API_LIB_DEBUG LWIP_DBG_OFF
-#define API_MSG_DEBUG LWIP_DBG_OFF
-#define TCPIP_DEBUG LWIP_DBG_OFF
-#define NETIF_DEBUG LWIP_DBG_OFF
-#define SOCKETS_DEBUG LWIP_DBG_OFF
-#define DEMO_DEBUG LWIP_DBG_OFF
-#define IP_DEBUG LWIP_DBG_OFF
-#define IP_REASS_DEBUG LWIP_DBG_OFF
-#define RAW_DEBUG LWIP_DBG_OFF
-#define ICMP_DEBUG LWIP_DBG_OFF
-#define IGMP_DEBUG LWIP_DBG_OFF
-#define UDP_DEBUG LWIP_DBG_OFF
-#define TCP_DEBUG LWIP_DBG_OFF
-#define TCP_INPUT_DEBUG LWIP_DBG_OFF
-#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
-#define TCP_RTO_DEBUG LWIP_DBG_OFF
-#define TCP_CWND_DEBUG LWIP_DBG_OFF
-#define TCP_WND_DEBUG LWIP_DBG_OFF
-#define TCP_FR_DEBUG LWIP_DBG_OFF
-#define TCP_QLEN_DEBUG LWIP_DBG_OFF
-#define TCP_RST_DEBUG LWIP_DBG_OFF
-#define ETHARP_DEBUG LWIP_DBG_OFF
-#define DNS_DEBUG LWIP_DBG_OFF
-
-#endif
-
-/*
-extern unsigned char debug_flags;
-#define LWIP_DBG_TYPES_ON debug_flags
-*/
-#define NO_SYS 1
-#define LWIP_SOCKET (NO_SYS==0)
-#define LWIP_NETCONN (NO_SYS==0)
-
-
-#define IP_FRAG_USES_STATIC_BUF 0
-
-
-
-/* ---------- Memory options ---------- */
-/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
- lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
- byte alignment -> define MEM_ALIGNMENT to 2. */
-/* MSVC port: intel processors don't need 4-byte alignment,
- but are faster that way! */
-#define MEM_ALIGNMENT 4
-
-/* 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 10240
-
-#if TARGET_LPC1768
-
-
-#define MEM_SIZE 3000 //2000
-
-///
-
-#define MEM_POSITION __attribute((section("AHBSRAM0")))
-
-/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
- sends a lot of data out of ROM (or other static memory), this
- should be set high. */
-#define MEMP_NUM_PBUF 16
-/* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One
- per active RAW "connection". */
-//#define MEMP_NUM_RAW_PCB 3
-/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
- per active UDP "connection". */
-#define MEMP_NUM_UDP_PCB 4
-/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
- connections. */
-#define MEMP_NUM_TCP_PCB 3
-/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
- connections. */
-#define MEMP_NUM_TCP_PCB_LISTEN 2//4
-/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
- segments. */
-#define MEMP_NUM_TCP_SEG 16
-/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
- timeouts. */
-#define MEMP_NUM_SYS_TIMEOUT 12
-
-/* The following four are used only with the sequential API and can be
- set to 0 if the application only will use the raw API. */
-/* MEMP_NUM_NETBUF: the number of struct netbufs. */
-#define MEMP_NUM_NETBUF 0
-/* MEMP_NUM_NETCONN: the number of struct netconns. */
-#define MEMP_NUM_NETCONN 0
-/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
- for sequential API communication and incoming packets. Used in
- src/api/tcpip.c. */
-#define MEMP_NUM_TCPIP_MSG_API 0
-#define MEMP_NUM_TCPIP_MSG_INPKT 0
-
-/* ---------- Pbuf options ---------- */
-/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
-#define PBUF_POOL_SIZE 8//16//100
-
-/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
-//#define PBUF_POOL_BUFSIZE 128
-
-/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
- link level header. */
-//#define PBUF_LINK_HLEN 16
-
-/** SYS_LIGHTWEIGHT_PROT
- * define SYS_LIGHTWEIGHT_PROT in lwipopts.h 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 here
-
-/* ---------- TCP options ---------- */
-#define LWIP_TCP 1
-//#define TCP_TTL 255
-
-/* Controls if TCP should queue segments that arrive out of
- order. Define to 0 if your device is low on memory. */
-#define TCP_QUEUE_OOSEQ 1
-
-/* TCP Maximum segment size. */
-//#define TCP_MSS 1024
-#define TCP_MSS 536//1024//536//0x276
-
-/* TCP sender buffer space (bytes). */
-#define TCP_SND_BUF (3 * TCP_MSS) //2048
-
-/* TCP sender buffer space (pbufs). This must be at least = 2 *
- TCP_SND_BUF/TCP_MSS for things to work. */
-#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF)/(TCP_MSS))
-
-/* TCP writable space (bytes). This must be less than or equal
- to TCP_SND_BUF. It is the amount of space which must be
- available in the tcp snd_buf for select to return writable */
-#define TCP_SNDLOWAT ((TCP_SND_BUF)/2)
-
-/**
- * TCP_WND: The size of a TCP window. This must be at least
- * (2 * TCP_MSS) for things to work well
- */
-/* TCP receive window. */
-#define TCP_WND (4 * TCP_MSS) //8096
-
-/* Maximum number of retransmissions of data segments. */
-//#define TCP_MAXRTX 12
-
-/* Maximum number of retransmissions of SYN segments. */
-//#define TCP_SYNMAXRTX 4
-
-#elif TARGET_LPC2368
-
-#define MEM_POSITION __attribute((section("AHBSRAM1")))
-
-/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
- sends a lot of data out of ROM (or other static memory), this
- should be set high. */
-#define MEMP_NUM_PBUF 8
-/* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One
- per active RAW "connection". */
-//#define MEMP_NUM_RAW_PCB 3
-/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
- per active UDP "connection". */
-#define MEMP_NUM_UDP_PCB 2
-/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
- connections. */
-#define MEMP_NUM_TCP_PCB 2
-/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
- connections. */
-#define MEMP_NUM_TCP_PCB_LISTEN 2//4
-/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
- segments. */
-#define MEMP_NUM_TCP_SEG 8
-/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
- timeouts. */
-#define MEMP_NUM_SYS_TIMEOUT 12
-
-/* The following four are used only with the sequential API and can be
- set to 0 if the application only will use the raw API. */
-/* MEMP_NUM_NETBUF: the number of struct netbufs. */
-#define MEMP_NUM_NETBUF 0
-/* MEMP_NUM_NETCONN: the number of struct netconns. */
-#define MEMP_NUM_NETCONN 0
-/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
- for sequential API communication and incoming packets. Used in
- src/api/tcpip.c. */
-#define MEMP_NUM_TCPIP_MSG_API 0
-#define MEMP_NUM_TCPIP_MSG_INPKT 0
-
-/* ---------- Pbuf options ---------- */
-/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
-#define PBUF_POOL_SIZE 8//16//100
-
-/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
-//#define PBUF_POOL_BUFSIZE 128
-
-/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
- link level header. */
-//#define PBUF_LINK_HLEN 16
-
-/** SYS_LIGHTWEIGHT_PROT
- * define SYS_LIGHTWEIGHT_PROT in lwipopts.h 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 here
-
-/* ---------- TCP options ---------- */
-#define LWIP_TCP 1
-#define TCP_TTL 255
-
-/* Controls if TCP should queue segments that arrive out of
- order. Define to 0 if your device is low on memory. */
-#define TCP_QUEUE_OOSEQ 0
-
-/* TCP Maximum segment size. */
-//#define TCP_MSS 1024
-#define TCP_MSS 536//0x276//536//0x276
-
-/* TCP sender buffer space (bytes). */
-#define TCP_SND_BUF (3 * TCP_MSS)
-
-/* TCP sender buffer space (pbufs). This must be at least = 2 *
- TCP_SND_BUF/TCP_MSS for things to work. */
-#define TCP_SND_QUEUELEN (2 * TCP_SND_BUF/TCP_MSS)//(4 * TCP_SND_BUF/TCP_MSS)
-
-/* TCP writable space (bytes). This must be less than or equal
- to TCP_SND_BUF. It is the amount of space which must be
- available in the tcp snd_buf for select to return writable */
-#define TCP_SNDLOWAT (TCP_SND_BUF/2)
-
-/* TCP receive window. */
-#define TCP_WND (3 * TCP_MSS) //8096
-
-/* Maximum number of retransmissions of data segments. */
-//#define TCP_MAXRTX 12
-
-/* Maximum number of retransmissions of SYN segments. */
-//#define TCP_SYNMAXRTX 4
-
-#endif
-
-/* ---------- ARP options ---------- */
-#define LWIP_ARP (NET_ETH | NET_ZG2100)
-#define ARP_TABLE_SIZE 4//10
-#define ARP_QUEUEING 0
-#define ETHARP_TRUST_IP_MAC 1
-
-/* ---------- IP options ---------- */
-/* Define IP_FORWARD to 1 if you wish to have 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 reassembly and segmentation.These are orthogonal even
- * if they both deal with IP fragments */
- /*
-#define IP_REASSEMBLY 1
-#define IP_REASS_MAX_PBUFS 10
-#define MEMP_NUM_REASSDATA 10
-#define IP_FRAG 1
-*/
-/* ---------- ICMP options ---------- */
-#define ICMP_TTL 255
-
-/* ---------- IGMP options ---------- */
-#define LWIP_IGMP (NET_ETH | NET_ZG2100)
-
-/* ---------- DHCP options ---------- */
-/* Define LWIP_DHCP to 1 if you want DHCP configuration of
- interfaces. */
-#define LWIP_DHCP (NET_ETH | NET_ZG2100)
-
-/* 1 if you want to do an ARP check on the offered address
- (recommended if using DHCP). */
-#define DHCP_DOES_ARP_CHECK (LWIP_DHCP)
-
-/* ---------- AUTOIP options ------- */
-#define LWIP_AUTOIP 0
-
-/* ---------- SNMP options ---------- */
-/** @todo SNMP is experimental for now
- @note UDP must be available for SNMP transport */
-#ifndef LWIP_SNMP
-#define LWIP_SNMP 0
-#endif
-
-
-#ifndef SNMP_PRIVATE_MIB
-#define SNMP_PRIVATE_MIB 0
-#endif
-
-
-/* ---------- UDP options ---------- */
-#define LWIP_UDP 1
-#define UDP_TTL 255
-
-/* ---------- DNS options ---------- */
-#define LWIP_DNS 1
-
-/* ---------- RAW options ---------- */
-#define LWIP_RAW 0
-#define RAW_TTL 255
-
-/* ---------- Statistics options ---------- */
-/* individual STATS options can be turned off by defining them to 0
- * (e.g #define TCP_STATS 0). All of them are turned off if LWIP_STATS
- * is 0
- * */
-
-#define LWIP_STATS 0
-
-/* ---------- PPP options ---------- */
-
-#define PPP_SUPPORT NET_PPP /* Set > 0 for PPP */
-
-#if PPP_SUPPORT > 0
-
-#define NUM_PPP 1 /* Max PPP sessions. */
-
-
-/* Select modules to enable. Ideally these would be set in the makefile but
- * we're limited by the command line length so you need to modify the settings
- * in this file.
- */
-#define PAP_SUPPORT 1 /* Set > 0 for PAP. */
-#define CHAP_SUPPORT 1 /* Set > 0 for CHAP. */
-#define MSCHAP_SUPPORT 0 /* Set > 0 for MSCHAP (NOT FUNCTIONAL!) */
-#define CBCP_SUPPORT 0 /* Set > 0 for CBCP (NOT FUNCTIONAL!) */
-#define CCP_SUPPORT 0 /* Set > 0 for CCP (NOT FUNCTIONAL!) */
-#define VJ_SUPPORT 1 /* Set > 0 for VJ header compression. */
-#define MD5_SUPPORT 1 /* Set > 0 for MD5 (see also CHAP) */
-
-
-/*
- * Timeouts.
- */
-#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */
-#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
-#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
-#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
-
-#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */
-#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
-
-#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */
-#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */
-
-
-/* Interval in seconds between keepalive echo requests, 0 to disable. */
-#if 1
-#define LCP_ECHOINTERVAL 0
-#else
-
-#define LCP_ECHOINTERVAL 10
-#endif
-
-
-/* Number of unanswered echo requests before failure. */
-#define LCP_MAXECHOFAILS 3
-
-/* Max Xmit idle time (in jiffies) before resend flag char. */
-#define PPP_MAXIDLEFLAG 0//Send it every time//100
-
-/*
- * Packet sizes
- *
- * Note - lcp shouldn't be allowed to negotiate stuff outside these
- * limits. See lcp.h in the pppd directory.
- * (XXX - these constants should simply be shared by lcp.c instead
- * of living in lcp.h)
- */
-#define PPP_MTU 1500 /* Default MTU (size of Info field) */
-#if 0
-#define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN)
-#else
-
-#define PPP_MAXMTU 1500 /* Largest MTU we allow */
-#endif
-
-#define PPP_MINMTU 64
-#define PPP_MRU 1500 /* default MRU = max length of info field */
-#define PPP_MAXMRU 1500 /* Largest MRU we allow */
-#define PPP_DEFMRU 296 /* Try for this */
-#define PPP_MINMRU 128 /* No MRUs below this */
-
-
-#define MAXNAMELEN 64 /* max length of hostname or name for auth */
-#define MAXSECRETLEN 64 /* max length of password or secret */
-
-#endif /* PPP_SUPPORT > 0 */
-
-//C++ Compat
-#define try vTry
-
-#endif
-
-
-#endif /* __LWIPOPTS_H__ */
--- a/LPC2368/lwip/lwipopts2.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +0,0 @@
-/*
- * 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.
- *
- * This file is part of the lwIP TCP/IP stack.
- *
- * Author: Adam Dunkels <adam@sics.se>
- *
- */
-#ifndef __LWIPOPTS_H__
-#define __LWIPOPTS_H__
-
-#include "netCfg.h"
-#if NET_LWIP_STACK
-
-//#include "arch/sys_arch.h"
-
-/* <sys/time.h> is included in cc.h! */
-#define LWIP_TIMEVAL_PRIVATE 0
-
-//#define __LWIP_DEBUG
-#include "dbg/dbg.h"
-
-#ifdef __LWIP_DEBUG
-
-#define LWIP_DEBUG 1
-
-#define LWIP_DBG_MIN_LEVEL 0
-//#define LWIP_COMPAT_SOCKETS 1
-#define TAPIF_DEBUG LWIP_DBG_OFF
-#define TUNIF_DEBUG LWIP_DBG_OFF
-#define UNIXIF_DEBUG LWIP_DBG_OFF
-#define DELIF_DEBUG LWIP_DBG_OFF
-#define SIO_FIFO_DEBUG LWIP_DBG_OFF
-#define TCPDUMP_DEBUG LWIP_DBG_OFF
-
-#define PPP_DEBUG LWIP_DBG_OFF
-#define MEM_DEBUG LWIP_DBG_ON
-#define MEMP_DEBUG LWIP_DBG_ON
-#define PBUF_DEBUG LWIP_DBG_ON
-#define API_LIB_DEBUG LWIP_DBG_OFF
-#define API_MSG_DEBUG LWIP_DBG_OFF
-#define TCPIP_DEBUG LWIP_DBG_OFF
-#define NETIF_DEBUG LWIP_DBG_OFF
-#define SOCKETS_DEBUG LWIP_DBG_OFF
-#define DEMO_DEBUG LWIP_DBG_OFF
-#define IP_DEBUG LWIP_DBG_OFF
-#define IP_REASS_DEBUG LWIP_DBG_OFF
-#define RAW_DEBUG LWIP_DBG_OFF
-#define ICMP_DEBUG LWIP_DBG_OFF
-#define UDP_DEBUG LWIP_DBG_OFF
-#define TCP_DEBUG LWIP_DBG_OFF
-#define TCP_INPUT_DEBUG LWIP_DBG_OFF
-#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
-#define TCP_RTO_DEBUG LWIP_DBG_OFF
-#define TCP_CWND_DEBUG LWIP_DBG_OFF
-#define TCP_WND_DEBUG LWIP_DBG_OFF
-#define TCP_FR_DEBUG LWIP_DBG_OFF
-#define TCP_QLEN_DEBUG LWIP_DBG_OFF
-#define TCP_RST_DEBUG LWIP_DBG_OFF
-#define ETHARP_DEBUG LWIP_DBG_OFF
-#define DNS_DEBUG LWIP_DBG_OFF
-
-#endif
-
-/*
-extern unsigned char debug_flags;
-#define LWIP_DBG_TYPES_ON debug_flags
-*/
-#define NO_SYS 1
-#define LWIP_SOCKET (NO_SYS==0)
-#define LWIP_NETCONN (NO_SYS==0)
-
-
-#define IP_FRAG_USES_STATIC_BUF 0
-
-
-
-/* ---------- Memory options ---------- */
-/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
- lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
- byte alignment -> define MEM_ALIGNMENT to 2. */
-/* MSVC port: intel processors don't need 4-byte alignment,
- but are faster that way! */
-#define MEM_ALIGNMENT 4
-
-/* 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 10240
-
-#if TARGET_LPC1768
-
-
-#define MEM_SIZE 4000
-
-///
-
-#define MEM_POSITION __attribute((section("AHBSRAM0")))
-
-/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
- sends a lot of data out of ROM (or other static memory), this
- should be set high. */
-#define MEMP_NUM_PBUF 16
-/* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One
- per active RAW "connection". */
-//#define MEMP_NUM_RAW_PCB 3
-/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
- per active UDP "connection". */
-#define MEMP_NUM_UDP_PCB 2
-/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
- connections. */
-#define MEMP_NUM_TCP_PCB 2
-/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
- connections. */
-#define MEMP_NUM_TCP_PCB_LISTEN 2//4
-/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
- segments. */
-#define MEMP_NUM_TCP_SEG 16
-/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
- timeouts. */
-#define MEMP_NUM_SYS_TIMEOUT 12
-
-/* The following four are used only with the sequential API and can be
- set to 0 if the application only will use the raw API. */
-/* MEMP_NUM_NETBUF: the number of struct netbufs. */
-#define MEMP_NUM_NETBUF 0
-/* MEMP_NUM_NETCONN: the number of struct netconns. */
-#define MEMP_NUM_NETCONN 0
-/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
- for sequential API communication and incoming packets. Used in
- src/api/tcpip.c. */
-#define MEMP_NUM_TCPIP_MSG_API 0
-#define MEMP_NUM_TCPIP_MSG_INPKT 0
-
-/* ---------- Pbuf options ---------- */
-/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
-#define PBUF_POOL_SIZE 8//100
-
-/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
-#define PBUF_POOL_BUFSIZE 128
-
-/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
- link level header. */
-//#define PBUF_LINK_HLEN 16
-
-/** SYS_LIGHTWEIGHT_PROT
- * define SYS_LIGHTWEIGHT_PROT in lwipopts.h 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 here
-
-/* ---------- TCP options ---------- */
-#define LWIP_TCP 1
-#define TCP_TTL 255
-
-/* Controls if TCP should queue segments that arrive out of
- order. Define to 0 if your device is low on memory. */
-#define TCP_QUEUE_OOSEQ 0
-
-/* TCP Maximum segment size. */
-//#define TCP_MSS 1024
-#define TCP_MSS 0x276//536//0x276
-
-/* TCP sender buffer space (bytes). */
-#define TCP_SND_BUF 2048
-
-/* TCP sender buffer space (pbufs). This must be at least = 2 *
- TCP_SND_BUF/TCP_MSS for things to work. */
-#define TCP_SND_QUEUELEN (2 * TCP_SND_BUF/TCP_MSS)
-
-/* TCP writable space (bytes). This must be less than or equal
- to TCP_SND_BUF. It is the amount of space which must be
- available in the tcp snd_buf for select to return writable */
-#define TCP_SNDLOWAT (TCP_SND_BUF/2)
-
-/* TCP receive window. */
-#define TCP_WND 2048 //8096
-
-/* Maximum number of retransmissions of data segments. */
-//#define TCP_MAXRTX 12
-
-/* Maximum number of retransmissions of SYN segments. */
-//#define TCP_SYNMAXRTX 4
-
-#elif TARGET_LPC2368
-
-#define MEM_POSITION __attribute((section("AHBSRAM1")))
-
-/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
- sends a lot of data out of ROM (or other static memory), this
- should be set high. */
-#define MEMP_NUM_PBUF 8
-/* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One
- per active RAW "connection". */
-//#define MEMP_NUM_RAW_PCB 3
-/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
- per active UDP "connection". */
-#define MEMP_NUM_UDP_PCB 2
-/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
- connections. */
-#define MEMP_NUM_TCP_PCB 2
-/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
- connections. */
-#define MEMP_NUM_TCP_PCB_LISTEN 2//4
-/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
- segments. */
-#define MEMP_NUM_TCP_SEG 8
-/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
- timeouts. */
-#define MEMP_NUM_SYS_TIMEOUT 12
-
-/* The following four are used only with the sequential API and can be
- set to 0 if the application only will use the raw API. */
-/* MEMP_NUM_NETBUF: the number of struct netbufs. */
-#define MEMP_NUM_NETBUF 0
-/* MEMP_NUM_NETCONN: the number of struct netconns. */
-#define MEMP_NUM_NETCONN 0
-/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
- for sequential API communication and incoming packets. Used in
- src/api/tcpip.c. */
-#define MEMP_NUM_TCPIP_MSG_API 0
-#define MEMP_NUM_TCPIP_MSG_INPKT 0
-
-/* ---------- Pbuf options ---------- */
-/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
-#define PBUF_POOL_SIZE 8//16//100
-
-/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
-//#define PBUF_POOL_BUFSIZE 128
-
-/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
- link level header. */
-//#define PBUF_LINK_HLEN 16
-
-/** SYS_LIGHTWEIGHT_PROT
- * define SYS_LIGHTWEIGHT_PROT in lwipopts.h 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 here
-
-/* ---------- TCP options ---------- */
-#define LWIP_TCP 1
-#define TCP_TTL 255
-
-/* Controls if TCP should queue segments that arrive out of
- order. Define to 0 if your device is low on memory. */
-#define TCP_QUEUE_OOSEQ 0
-
-/* TCP Maximum segment size. */
-//#define TCP_MSS 1024
-#define TCP_MSS 512//0x276//536//0x276
-
-/* TCP sender buffer space (bytes). */
-#define TCP_SND_BUF 1024//2048
-
-/* TCP sender buffer space (pbufs). This must be at least = 2 *
- TCP_SND_BUF/TCP_MSS for things to work. */
-#define TCP_SND_QUEUELEN (4 * TCP_SND_BUF/TCP_MSS)//(4 * TCP_SND_BUF/TCP_MSS)
-
-/* TCP writable space (bytes). This must be less than or equal
- to TCP_SND_BUF. It is the amount of space which must be
- available in the tcp snd_buf for select to return writable */
-#define TCP_SNDLOWAT (TCP_SND_BUF/2)
-
-/* TCP receive window. */
-#define TCP_WND 512 //8096
-
-/* Maximum number of retransmissions of data segments. */
-//#define TCP_MAXRTX 12
-
-/* Maximum number of retransmissions of SYN segments. */
-//#define TCP_SYNMAXRTX 4
-
-#endif
-
-/* ---------- ARP options ---------- */
-#define LWIP_ARP (NET_ETH | NET_ZG2100)
-#define ARP_TABLE_SIZE 2//4//10
-#define ARP_QUEUEING 0//1
-#define ETHARP_TRUST_IP_MAC 1
-
-/* ---------- IP options ---------- */
-/* Define IP_FORWARD to 1 if you wish to have 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 reassembly and segmentation.These are orthogonal even
- * if they both deal with IP fragments */
- /*
-#define IP_REASSEMBLY 1
-#define IP_REASS_MAX_PBUFS 10
-#define MEMP_NUM_REASSDATA 10
-#define IP_FRAG 1
-*/
-/* ---------- ICMP options ---------- */
-#define ICMP_TTL 255
-
-/* ---------- DHCP options ---------- */
-/* Define LWIP_DHCP to 1 if you want DHCP configuration of
- interfaces. */
-#define LWIP_DHCP (NET_ETH | NET_ZG2100)
-
-/* 1 if you want to do an ARP check on the offered address
- (recommended if using DHCP). */
-#define DHCP_DOES_ARP_CHECK (LWIP_DHCP)
-
-/* ---------- AUTOIP options ------- */
-#define LWIP_AUTOIP 0
-
-/* ---------- SNMP options ---------- */
-/** @todo SNMP is experimental for now
- @note UDP must be available for SNMP transport */
-#ifndef LWIP_SNMP
-#define LWIP_SNMP 0
-#endif
-
-
-#ifndef SNMP_PRIVATE_MIB
-#define SNMP_PRIVATE_MIB 0
-#endif
-
-
-/* ---------- UDP options ---------- */
-#define LWIP_UDP 1
-#define UDP_TTL 255
-
-/* ---------- DNS options ---------- */
-#define LWIP_DNS 1
-
-/* ---------- RAW options ---------- */
-#define LWIP_RAW 0
-#define RAW_TTL 255
-
-/* ---------- Statistics options ---------- */
-/* individual STATS options can be turned off by defining them to 0
- * (e.g #define TCP_STATS 0). All of them are turned off if LWIP_STATS
- * is 0
- * */
-
-#define LWIP_STATS 0
-
-/* ---------- PPP options ---------- */
-
-#define PPP_SUPPORT NET_PPP /* Set > 0 for PPP */
-
-#if PPP_SUPPORT > 0
-
-#define NUM_PPP 1 /* Max PPP sessions. */
-
-
-/* Select modules to enable. Ideally these would be set in the makefile but
- * we're limited by the command line length so you need to modify the settings
- * in this file.
- */
-#define PAP_SUPPORT 1 /* Set > 0 for PAP. */
-#define CHAP_SUPPORT 1 /* Set > 0 for CHAP. */
-#define MSCHAP_SUPPORT 0 /* Set > 0 for MSCHAP (NOT FUNCTIONAL!) */
-#define CBCP_SUPPORT 0 /* Set > 0 for CBCP (NOT FUNCTIONAL!) */
-#define CCP_SUPPORT 0 /* Set > 0 for CCP (NOT FUNCTIONAL!) */
-#define VJ_SUPPORT 1 /* Set > 0 for VJ header compression. */
-#define MD5_SUPPORT 1 /* Set > 0 for MD5 (see also CHAP) */
-
-
-/*
- * Timeouts.
- */
-#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */
-#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
-#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
-#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
-
-#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */
-#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
-
-#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */
-#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */
-
-
-/* Interval in seconds between keepalive echo requests, 0 to disable. */
-#if 1
-#define LCP_ECHOINTERVAL 0
-#else
-
-#define LCP_ECHOINTERVAL 10
-#endif
-
-
-/* Number of unanswered echo requests before failure. */
-#define LCP_MAXECHOFAILS 3
-
-/* Max Xmit idle time (in jiffies) before resend flag char. */
-#define PPP_MAXIDLEFLAG 0//Send it every time//100
-
-/*
- * Packet sizes
- *
- * Note - lcp shouldn't be allowed to negotiate stuff outside these
- * limits. See lcp.h in the pppd directory.
- * (XXX - these constants should simply be shared by lcp.c instead
- * of living in lcp.h)
- */
-#define PPP_MTU 1500 /* Default MTU (size of Info field) */
-#if 0
-#define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN)
-#else
-
-#define PPP_MAXMTU 1500 /* Largest MTU we allow */
-#endif
-
-#define PPP_MINMTU 64
-#define PPP_MRU 1500 /* default MRU = max length of info field */
-#define PPP_MAXMRU 1500 /* Largest MRU we allow */
-#define PPP_DEFMRU 296 /* Try for this */
-#define PPP_MINMRU 128 /* No MRUs below this */
-
-
-#define MAXNAMELEN 64 /* max length of hostname or name for auth */
-#define MAXSECRETLEN 64 /* max length of password or secret */
-
-#endif /* PPP_SUPPORT > 0 */
-
-//C++ Compat
-#define try vTry
-
-#endif
-
-
-#endif /* __LWIPOPTS_H__ */
--- a/LPC2368/lwip/netif/ppp/auth.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/***************************************************************************** -* auth.h - PPP Authentication and phase control header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1998 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher <marc@mbsi.ca> -* Ported to lwIP. -* 97-12-04 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc. -* Original derived from BSD pppd.h. -*****************************************************************************/ -/* - * pppd.h - PPP daemon global declarations. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - */ - -#ifndef AUTH_H -#define AUTH_H - -/*********************** -*** PUBLIC FUNCTIONS *** -***********************/ - -/* we are starting to use the link */ -void link_required (int); - -/* we are finished with the link */ -void link_terminated (int); - -/* the LCP layer has left the Opened state */ -void link_down (int); - -/* the link is up; authenticate now */ -void link_established (int); - -/* a network protocol has come up */ -void np_up (int, u16_t); - -/* a network protocol has gone down */ -void np_down (int, u16_t); - -/* a network protocol no longer needs link */ -void np_finished (int, u16_t); - -/* peer failed to authenticate itself */ -void auth_peer_fail (int, u16_t); - -/* peer successfully authenticated itself */ -void auth_peer_success (int, u16_t, char *, int); - -/* we failed to authenticate ourselves */ -void auth_withpeer_fail (int, u16_t); - -/* we successfully authenticated ourselves */ -void auth_withpeer_success (int, u16_t); - -/* check authentication options supplied */ -void auth_check_options (void); - -/* check what secrets we have */ -void auth_reset (int); - -/* Check peer-supplied username/password */ -u_char check_passwd (int, char *, int, char *, int, char **, int *); - -/* get "secret" for chap */ -int get_secret (int, char *, char *, char *, int *, int); - -/* check if IP address is authorized */ -int auth_ip_addr (int, u32_t); - -/* check if IP address is unreasonable */ -int bad_ip_adrs (u32_t); - -#endif /* AUTH_H */
--- a/LPC2368/lwip/netif/ppp/chap.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/*****************************************************************************
-* chap.h - Network Challenge Handshake Authentication Protocol header file.
-*
-* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
-* portions Copyright (c) 1998 Global Election Systems Inc.
-*
-* The authors hereby grant permission to use, copy, modify, distribute,
-* and license this software and its documentation for any purpose, provided
-* that existing copyright notices are retained in all copies and that this
-* notice and the following disclaimer are included verbatim in any
-* distributions. No written agreement, license, or royalty fee is required
-* for any of the authorized uses.
-*
-* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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.
-*
-******************************************************************************
-* REVISION HISTORY
-*
-* 03-01-01 Marc Boucher <marc@mbsi.ca>
-* Ported to lwIP.
-* 97-12-03 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc.
-* Original built from BSD network code.
-******************************************************************************/
-/*
- * chap.h - Challenge Handshake Authentication Protocol definitions.
- *
- * Copyright (c) 1993 The Australian National University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the Australian National University. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Copyright (c) 1991 Gregory M. Christy
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the author.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id: chap.h,v 1.6 2010/01/24 13:19:34 goldsimon Exp $
- */
-
-#ifndef CHAP_H
-#define CHAP_H
-
-/* Code + ID + length */
-#define CHAP_HEADERLEN 4
-
-/*
- * CHAP codes.
- */
-
-#define CHAP_DIGEST_MD5 5 /* use MD5 algorithm */
-#define MD5_SIGNATURE_SIZE 16 /* 16 bytes in a MD5 message digest */
-#define CHAP_MICROSOFT 0x80 /* use Microsoft-compatible alg. */
-#define MS_CHAP_RESPONSE_LEN 49 /* Response length for MS-CHAP */
-
-#define CHAP_CHALLENGE 1
-#define CHAP_RESPONSE 2
-#define CHAP_SUCCESS 3
-#define CHAP_FAILURE 4
-
-/*
- * Challenge lengths (for challenges we send) and other limits.
- */
-#define MIN_CHALLENGE_LENGTH 32
-#define MAX_CHALLENGE_LENGTH 64
-#define MAX_RESPONSE_LENGTH 64 /* sufficient for MD5 or MS-CHAP */
-
-/*
- * Each interface is described by a chap structure.
- */
-
-typedef struct chap_state {
- int unit; /* Interface unit number */
- int clientstate; /* Client state */
- int serverstate; /* Server state */
- u_char challenge[MAX_CHALLENGE_LENGTH]; /* last challenge string sent */
- u_char chal_len; /* challenge length */
- u_char chal_id; /* ID of last challenge */
- u_char chal_type; /* hash algorithm for challenges */
- u_char id; /* Current id */
- char *chal_name; /* Our name to use with challenge */
- int chal_interval; /* Time until we challenge peer again */
- int timeouttime; /* Timeout time in seconds */
- int max_transmits; /* Maximum # of challenge transmissions */
- int chal_transmits; /* Number of transmissions of challenge */
- int resp_transmits; /* Number of transmissions of response */
- u_char response[MAX_RESPONSE_LENGTH]; /* Response to send */
- u_char resp_length; /* length of response */
- u_char resp_id; /* ID for response messages */
- u_char resp_type; /* hash algorithm for responses */
- char *resp_name; /* Our name to send with response */
-} chap_state;
-
-
-/*
- * Client (peer) states.
- */
-#define CHAPCS_INITIAL 0 /* Lower layer down, not opened */
-#define CHAPCS_CLOSED 1 /* Lower layer up, not opened */
-#define CHAPCS_PENDING 2 /* Auth us to peer when lower up */
-#define CHAPCS_LISTEN 3 /* Listening for a challenge */
-#define CHAPCS_RESPONSE 4 /* Sent response, waiting for status */
-#define CHAPCS_OPEN 5 /* We've received Success */
-
-/*
- * Server (authenticator) states.
- */
-#define CHAPSS_INITIAL 0 /* Lower layer down, not opened */
-#define CHAPSS_CLOSED 1 /* Lower layer up, not opened */
-#define CHAPSS_PENDING 2 /* Auth peer when lower up */
-#define CHAPSS_INITIAL_CHAL 3 /* We've sent the first challenge */
-#define CHAPSS_OPEN 4 /* We've sent a Success msg */
-#define CHAPSS_RECHALLENGE 5 /* We've sent another challenge */
-#define CHAPSS_BADAUTH 6 /* We've sent a Failure msg */
-
-extern chap_state chap[];
-
-void ChapAuthWithPeer (int, char *, u_char);
-void ChapAuthPeer (int, char *, u_char);
-
-extern struct protent chap_protent;
-
-#endif /* CHAP_H */
--- a/LPC2368/lwip/netif/ppp/chpms.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/***************************************************************************** -* chpms.h - Network Microsoft Challenge Handshake Protocol header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1998 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher <marc@mbsi.ca> -* Ported to lwIP. -* 98-01-30 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc. -* Original built from BSD network code. -******************************************************************************/ -/* - * chap.h - Challenge Handshake Authentication Protocol definitions. - * - * Copyright (c) 1995 Eric Rosenquist, Strata Software Limited. - * http://www.strataware.com/ - * - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Eric Rosenquist. 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: chpms.h,v 1.5 2007/12/19 20:47:23 fbernon Exp $ - */ - -#ifndef CHPMS_H -#define CHPMS_H - -#define MAX_NT_PASSWORD 256 /* Maximum number of (Unicode) chars in an NT password */ - -void ChapMS (chap_state *, char *, int, char *, int); - -#endif /* CHPMS_H */
--- a/LPC2368/lwip/netif/ppp/fsm.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*****************************************************************************
-* fsm.h - Network Control Protocol Finite State Machine header file.
-*
-* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
-* Copyright (c) 1997 Global Election Systems Inc.
-*
-* The authors hereby grant permission to use, copy, modify, distribute,
-* and license this software and its documentation for any purpose, provided
-* that existing copyright notices are retained in all copies and that this
-* notice and the following disclaimer are included verbatim in any
-* distributions. No written agreement, license, or royalty fee is required
-* for any of the authorized uses.
-*
-* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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.
-*
-******************************************************************************
-* REVISION HISTORY
-*
-* 03-01-01 Marc Boucher <marc@mbsi.ca>
-* Ported to lwIP.
-* 97-11-05 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc.
-* Original based on BSD code.
-*****************************************************************************/
-/*
- * fsm.h - {Link, IP} Control Protocol Finite State Machine definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id: fsm.h,v 1.5 2009/12/31 17:08:08 goldsimon Exp $
- */
-
-#ifndef FSM_H
-#define FSM_H
-
-/*
- * LCP Packet header = Code, id, length.
- */
-#define HEADERLEN (sizeof (u_char) + sizeof (u_char) + sizeof (u_short))
-
-
-/*
- * CP (LCP, IPCP, etc.) codes.
- */
-#define CONFREQ 1 /* Configuration Request */
-#define CONFACK 2 /* Configuration Ack */
-#define CONFNAK 3 /* Configuration Nak */
-#define CONFREJ 4 /* Configuration Reject */
-#define TERMREQ 5 /* Termination Request */
-#define TERMACK 6 /* Termination Ack */
-#define CODEREJ 7 /* Code Reject */
-
-
-/*
- * Each FSM is described by an fsm structure and fsm callbacks.
- */
-typedef struct fsm {
- int unit; /* Interface unit number */
- u_short protocol; /* Data Link Layer Protocol field value */
- int state; /* State */
- int flags; /* Contains option bits */
- u_char id; /* Current id */
- u_char reqid; /* Current request id */
- u_char seen_ack; /* Have received valid Ack/Nak/Rej to Req */
- int timeouttime; /* Timeout time in milliseconds */
- int maxconfreqtransmits; /* Maximum Configure-Request transmissions */
- int retransmits; /* Number of retransmissions left */
- int maxtermtransmits; /* Maximum Terminate-Request transmissions */
- int nakloops; /* Number of nak loops since last ack */
- int maxnakloops; /* Maximum number of nak loops tolerated */
- struct fsm_callbacks* callbacks; /* Callback routines */
- char* term_reason; /* Reason for closing protocol */
- int term_reason_len; /* Length of term_reason */
-} fsm;
-
-
-typedef struct fsm_callbacks {
- void (*resetci)(fsm*); /* Reset our Configuration Information */
- int (*cilen)(fsm*); /* Length of our Configuration Information */
- void (*addci)(fsm*, u_char*, int*); /* Add our Configuration Information */
- int (*ackci)(fsm*, u_char*, int); /* ACK our Configuration Information */
- int (*nakci)(fsm*, u_char*, int); /* NAK our Configuration Information */
- int (*rejci)(fsm*, u_char*, int); /* Reject our Configuration Information */
- int (*reqci)(fsm*, u_char*, int*, int); /* Request peer's Configuration Information */
- void (*up)(fsm*); /* Called when fsm reaches LS_OPENED state */
- void (*down)(fsm*); /* Called when fsm leaves LS_OPENED state */
- void (*starting)(fsm*); /* Called when we want the lower layer */
- void (*finished)(fsm*); /* Called when we don't want the lower layer */
- void (*protreject)(int); /* Called when Protocol-Reject received */
- void (*retransmit)(fsm*); /* Retransmission is necessary */
- int (*extcode)(fsm*, int, u_char, u_char*, int); /* Called when unknown code received */
- char *proto_name; /* String name for protocol (for messages) */
-} fsm_callbacks;
-
-
-/*
- * Link states.
- */
-#define LS_INITIAL 0 /* Down, hasn't been opened */
-#define LS_STARTING 1 /* Down, been opened */
-#define LS_CLOSED 2 /* Up, hasn't been opened */
-#define LS_STOPPED 3 /* Open, waiting for down event */
-#define LS_CLOSING 4 /* Terminating the connection, not open */
-#define LS_STOPPING 5 /* Terminating, but open */
-#define LS_REQSENT 6 /* We've sent a Config Request */
-#define LS_ACKRCVD 7 /* We've received a Config Ack */
-#define LS_ACKSENT 8 /* We've sent a Config Ack */
-#define LS_OPENED 9 /* Connection available */
-
-/*
- * Flags - indicate options controlling FSM operation
- */
-#define OPT_PASSIVE 1 /* Don't die if we don't get a response */
-#define OPT_RESTART 2 /* Treat 2nd OPEN as DOWN, UP */
-#define OPT_SILENT 4 /* Wait for peer to speak first */
-
-
-/*
- * Prototypes
- */
-void fsm_init (fsm*);
-void fsm_lowerup (fsm*);
-void fsm_lowerdown (fsm*);
-void fsm_open (fsm*);
-void fsm_close (fsm*, char*);
-void fsm_input (fsm*, u_char*, int);
-void fsm_protreject (fsm*);
-void fsm_sdata (fsm*, u_char, u_char, u_char*, int);
-
-
-/*
- * Variables
- */
-extern int peer_mru[]; /* currently negotiated peer MRU (per unit) */
-
-#endif /* FSM_H */
--- a/LPC2368/lwip/netif/ppp/ipcp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*****************************************************************************
-* ipcp.h - PPP IP NCP: Internet Protocol Network Control Protocol header file.
-*
-* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
-* portions Copyright (c) 1997 Global Election Systems Inc.
-*
-* The authors hereby grant permission to use, copy, modify, distribute,
-* and license this software and its documentation for any purpose, provided
-* that existing copyright notices are retained in all copies and that this
-* notice and the following disclaimer are included verbatim in any
-* distributions. No written agreement, license, or royalty fee is required
-* for any of the authorized uses.
-*
-* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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.
-*
-******************************************************************************
-* REVISION HISTORY
-*
-* 03-01-01 Marc Boucher <marc@mbsi.ca>
-* Ported to lwIP.
-* 97-12-04 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc.
-* Original derived from BSD codes.
-*****************************************************************************/
-/*
- * ipcp.h - IP Control Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id: ipcp.h,v 1.4 2010/01/18 20:49:43 goldsimon Exp $
- */
-
-#ifndef IPCP_H
-#define IPCP_H
-
-/*
- * Options.
- */
-#define CI_ADDRS 1 /* IP Addresses */
-#define CI_COMPRESSTYPE 2 /* Compression Type */
-#define CI_ADDR 3
-
-#define CI_MS_DNS1 129 /* Primary DNS value */
-#define CI_MS_WINS1 128 /* Primary WINS value */
-#define CI_MS_DNS2 131 /* Secondary DNS value */
-#define CI_MS_WINS2 130 /* Secondary WINS value */
-
-#define IPCP_VJMODE_OLD 1 /* "old" mode (option # = 0x0037) */
-#define IPCP_VJMODE_RFC1172 2 /* "old-rfc"mode (option # = 0x002d) */
-#define IPCP_VJMODE_RFC1332 3 /* "new-rfc"mode (option # = 0x002d, */
- /* maxslot and slot number compression) */
-
-#define IPCP_VJ_COMP 0x002d /* current value for VJ compression option */
-#define IPCP_VJ_COMP_OLD 0x0037 /* "old" (i.e, broken) value for VJ */
- /* compression option */
-
-typedef struct ipcp_options {
- u_int neg_addr : 1; /* Negotiate IP Address? */
- u_int old_addrs : 1; /* Use old (IP-Addresses) option? */
- u_int req_addr : 1; /* Ask peer to send IP address? */
- u_int default_route : 1; /* Assign default route through interface? */
- u_int proxy_arp : 1; /* Make proxy ARP entry for peer? */
- u_int neg_vj : 1; /* Van Jacobson Compression? */
- u_int old_vj : 1; /* use old (short) form of VJ option? */
- u_int accept_local : 1; /* accept peer's value for ouraddr */
- u_int accept_remote : 1; /* accept peer's value for hisaddr */
- u_int req_dns1 : 1; /* Ask peer to send primary DNS address? */
- u_int req_dns2 : 1; /* Ask peer to send secondary DNS address? */
- u_short vj_protocol; /* protocol value to use in VJ option */
- u_char maxslotindex; /* VJ slots - 1. */
- u_char cflag; /* VJ slot compression flag. */
- u32_t ouraddr, hisaddr; /* Addresses in NETWORK BYTE ORDER */
- u32_t dnsaddr[2]; /* Primary and secondary MS DNS entries */
- u32_t winsaddr[2]; /* Primary and secondary MS WINS entries */
-} ipcp_options;
-
-extern fsm ipcp_fsm[];
-extern ipcp_options ipcp_wantoptions[];
-extern ipcp_options ipcp_gotoptions[];
-extern ipcp_options ipcp_allowoptions[];
-extern ipcp_options ipcp_hisoptions[];
-
-extern struct protent ipcp_protent;
-
-#endif /* IPCP_H */
--- a/LPC2368/lwip/netif/ppp/lcp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*****************************************************************************
-* lcp.h - Network Link Control Protocol header file.
-*
-* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
-* portions Copyright (c) 1997 Global Election Systems Inc.
-*
-* The authors hereby grant permission to use, copy, modify, distribute,
-* and license this software and its documentation for any purpose, provided
-* that existing copyright notices are retained in all copies and that this
-* notice and the following disclaimer are included verbatim in any
-* distributions. No written agreement, license, or royalty fee is required
-* for any of the authorized uses.
-*
-* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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.
-*
-******************************************************************************
-* REVISION HISTORY
-*
-* 03-01-01 Marc Boucher <marc@mbsi.ca>
-* Ported to lwIP.
-* 97-11-05 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc.
-* Original derived from BSD codes.
-*****************************************************************************/
-/*
- * lcp.h - Link Control Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id: lcp.h,v 1.4 2010/01/18 20:49:43 goldsimon Exp $
- */
-
-#ifndef LCP_H
-#define LCP_H
-/*
- * Options.
- */
-#define CI_MRU 1 /* Maximum Receive Unit */
-#define CI_ASYNCMAP 2 /* Async Control Character Map */
-#define CI_AUTHTYPE 3 /* Authentication Type */
-#define CI_QUALITY 4 /* Quality Protocol */
-#define CI_MAGICNUMBER 5 /* Magic Number */
-#define CI_PCOMPRESSION 7 /* Protocol Field Compression */
-#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */
-#define CI_CALLBACK 13 /* callback */
-#define CI_MRRU 17 /* max reconstructed receive unit; multilink */
-#define CI_SSNHF 18 /* short sequence numbers for multilink */
-#define CI_EPDISC 19 /* endpoint discriminator */
-
-/*
- * LCP-specific packet types (code numbers).
- */
-#define PROTREJ 8 /* Protocol Reject */
-#define ECHOREQ 9 /* Echo Request */
-#define ECHOREP 10 /* Echo Reply */
-#define DISCREQ 11 /* Discard Request */
-#define CBCP_OPT 6 /* Use callback control protocol */
-
-/*
- * The state of options is described by an lcp_options structure.
- */
-typedef struct lcp_options {
- u_int passive : 1; /* Don't die if we don't get a response */
- u_int silent : 1; /* Wait for the other end to start first */
- u_int restart : 1; /* Restart vs. exit after close */
- u_int neg_mru : 1; /* Negotiate the MRU? */
- u_int neg_asyncmap : 1; /* Negotiate the async map? */
- u_int neg_upap : 1; /* Ask for UPAP authentication? */
- u_int neg_chap : 1; /* Ask for CHAP authentication? */
- u_int neg_magicnumber : 1; /* Ask for magic number? */
- u_int neg_pcompression : 1; /* HDLC Protocol Field Compression? */
- u_int neg_accompression : 1; /* HDLC Address/Control Field Compression? */
- u_int neg_lqr : 1; /* Negotiate use of Link Quality Reports */
- u_int neg_cbcp : 1; /* Negotiate use of CBCP */
-#ifdef PPP_MULTILINK
- u_int neg_mrru : 1; /* Negotiate multilink MRRU */
- u_int neg_ssnhf : 1; /* Negotiate short sequence numbers */
- u_int neg_endpoint : 1; /* Negotiate endpoint discriminator */
-#endif
- u_short mru; /* Value of MRU */
-#ifdef PPP_MULTILINK
- u_short mrru; /* Value of MRRU, and multilink enable */
-#endif
- u_char chap_mdtype; /* which MD type (hashing algorithm) */
- u32_t asyncmap; /* Value of async map */
- u32_t magicnumber;
- int numloops; /* Number of loops during magic number neg. */
- u32_t lqr_period; /* Reporting period for LQR 1/100ths second */
-#ifdef PPP_MULTILINK
- struct epdisc endpoint; /* endpoint discriminator */
-#endif
-} lcp_options;
-
-/*
- * Values for phase from BSD pppd.h based on RFC 1661.
- */
-typedef enum {
- PHASE_DEAD = 0,
- PHASE_INITIALIZE,
- PHASE_ESTABLISH,
- PHASE_AUTHENTICATE,
- PHASE_CALLBACK,
- PHASE_NETWORK,
- PHASE_TERMINATE
-} LinkPhase;
-
-
-
-extern LinkPhase lcp_phase[NUM_PPP]; /* Phase of link session (RFC 1661) */
-extern lcp_options lcp_wantoptions[];
-extern lcp_options lcp_gotoptions[];
-extern lcp_options lcp_allowoptions[];
-extern lcp_options lcp_hisoptions[];
-extern ext_accm xmit_accm[];
-
-
-void lcp_init (int);
-void lcp_open (int);
-void lcp_close (int, char *);
-void lcp_lowerup (int);
-void lcp_lowerdown(int);
-void lcp_sprotrej (int, u_char *, int); /* send protocol reject */
-
-extern struct protent lcp_protent;
-
-/* Default number of times we receive our magic number from the peer
- before deciding the link is looped-back. */
-#define DEFLOOPBACKFAIL 10
-
-#endif /* LCP_H */
--- a/LPC2368/lwip/netif/ppp/magic.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/***************************************************************************** -* magic.h - Network Random Number Generator header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher <marc@mbsi.ca> -* Ported to lwIP. -* 97-12-04 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc. -* Original derived from BSD codes. -*****************************************************************************/ -/* - * magic.h - PPP Magic Number definitions. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: magic.h,v 1.3 2010/01/18 20:49:43 goldsimon Exp $ - */ - -#ifndef MAGIC_H -#define MAGIC_H - -/* Initialize the magic number generator */ -void magicInit(void); - -/* Returns the next magic number */ -u32_t magic(void); - -#endif /* MAGIC_H */
--- a/LPC2368/lwip/netif/ppp/md5.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- ***********************************************************************
- ** md5.h -- header file for implementation of MD5 **
- ** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
- ** Created: 2/17/90 RLR **
- ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
- ** Revised (for MD5): RLR 4/27/91 **
- ** -- G modified to have y&~z instead of y&z **
- ** -- FF, GG, HH modified to add in last register done **
- ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
- ** -- distinct additive constant for each step **
- ** -- round 4 added, working mod 7 **
- ***********************************************************************
- */
-
-/*
- ***********************************************************************
- ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
- ** **
- ** License to copy and use this software is granted provided that **
- ** it is identified as the "RSA Data Security, Inc. MD5 Message- **
- ** Digest Algorithm" in all material mentioning or referencing this **
- ** software or this function. **
- ** **
- ** License is also granted to make and use derivative works **
- ** provided that such works are identified as "derived from the RSA **
- ** Data Security, Inc. MD5 Message-Digest Algorithm" in all **
- ** material mentioning or referencing the derived work. **
- ** **
- ** RSA Data Security, Inc. makes no representations concerning **
- ** either the merchantability of this software or the suitability **
- ** of this software for any particular purpose. It is provided "as **
- ** is" without express or implied warranty of any kind. **
- ** **
- ** These notices must be retained in any copies of any part of this **
- ** documentation and/or software. **
- ***********************************************************************
- */
-
-#ifndef MD5_H
-#define MD5_H
-
-/* Data structure for MD5 (Message-Digest) computation */
-typedef struct {
- u32_t i[2]; /* number of _bits_ handled mod 2^64 */
- u32_t buf[4]; /* scratch buffer */
- unsigned char in[64]; /* input buffer */
- unsigned char digest[16]; /* actual digest after MD5Final call */
-} MD5_CTX;
-
-void MD5Init ( MD5_CTX *mdContext);
-void MD5Update( MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen);
-void MD5Final ( unsigned char hash[], MD5_CTX *mdContext);
-
-#endif /* MD5_H */
--- a/LPC2368/lwip/netif/ppp/pap.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*****************************************************************************
-* pap.h - PPP Password Authentication Protocol header file.
-*
-* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
-* portions Copyright (c) 1997 Global Election Systems Inc.
-*
-* The authors hereby grant permission to use, copy, modify, distribute,
-* and license this software and its documentation for any purpose, provided
-* that existing copyright notices are retained in all copies and that this
-* notice and the following disclaimer are included verbatim in any
-* distributions. No written agreement, license, or royalty fee is required
-* for any of the authorized uses.
-*
-* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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.
-*
-******************************************************************************
-* REVISION HISTORY
-*
-* 03-01-01 Marc Boucher <marc@mbsi.ca>
-* Ported to lwIP.
-* 97-12-04 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc.
-* Original derived from BSD codes.
-*****************************************************************************/
-/*
- * upap.h - User/Password Authentication Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifndef PAP_H
-#define PAP_H
-
-#if PAP_SUPPORT /* don't build if not configured for use in lwipopts.h */
-
-/*
- * Packet header = Code, id, length.
- */
-#define UPAP_HEADERLEN (sizeof (u_char) + sizeof (u_char) + sizeof (u_short))
-
-
-/*
- * UPAP codes.
- */
-#define UPAP_AUTHREQ 1 /* Authenticate-Request */
-#define UPAP_AUTHACK 2 /* Authenticate-Ack */
-#define UPAP_AUTHNAK 3 /* Authenticate-Nak */
-
-/*
- * Each interface is described by upap structure.
- */
-typedef struct upap_state {
- int us_unit; /* Interface unit number */
- const char *us_user; /* User */
- int us_userlen; /* User length */
- const char *us_passwd; /* Password */
- int us_passwdlen; /* Password length */
- int us_clientstate; /* Client state */
- int us_serverstate; /* Server state */
- u_char us_id; /* Current id */
- int us_timeouttime; /* Timeout (seconds) for auth-req retrans. */
- int us_transmits; /* Number of auth-reqs sent */
- int us_maxtransmits; /* Maximum number of auth-reqs to send */
- int us_reqtimeout; /* Time to wait for auth-req from peer */
-} upap_state;
-
-/*
- * Client states.
- */
-#define UPAPCS_INITIAL 0 /* Connection down */
-#define UPAPCS_CLOSED 1 /* Connection up, haven't requested auth */
-#define UPAPCS_PENDING 2 /* Connection down, have requested auth */
-#define UPAPCS_AUTHREQ 3 /* We've sent an Authenticate-Request */
-#define UPAPCS_OPEN 4 /* We've received an Ack */
-#define UPAPCS_BADAUTH 5 /* We've received a Nak */
-
-/*
- * Server states.
- */
-#define UPAPSS_INITIAL 0 /* Connection down */
-#define UPAPSS_CLOSED 1 /* Connection up, haven't requested auth */
-#define UPAPSS_PENDING 2 /* Connection down, have requested auth */
-#define UPAPSS_LISTEN 3 /* Listening for an Authenticate */
-#define UPAPSS_OPEN 4 /* We've sent an Ack */
-#define UPAPSS_BADAUTH 5 /* We've sent a Nak */
-
-
-extern upap_state upap[];
-
-void upap_authwithpeer (int, char *, char *);
-void upap_authpeer (int);
-
-extern struct protent pap_protent;
-
-#endif /* PAP_SUPPORT */
-
-#endif /* PAP_H */
--- a/LPC2368/lwip/netif/ppp/ppp.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,483 +0,0 @@
-/*****************************************************************************
-* ppp.h - Network Point to Point Protocol header file.
-*
-* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
-* portions Copyright (c) 1997 Global Election Systems Inc.
-*
-* The authors hereby grant permission to use, copy, modify, distribute,
-* and license this software and its documentation for any purpose, provided
-* that existing copyright notices are retained in all copies and that this
-* notice and the following disclaimer are included verbatim in any
-* distributions. No written agreement, license, or royalty fee is required
-* for any of the authorized uses.
-*
-* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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.
-*
-******************************************************************************
-* REVISION HISTORY
-*
-* 03-01-01 Marc Boucher <marc@mbsi.ca>
-* Ported to lwIP.
-* 97-11-05 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc.
-* Original derived from BSD codes.
-*****************************************************************************/
-
-#ifndef PPP_H
-#define PPP_H
-
-#include "lwip/opt.h"
-
-#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */
-
-#include "lwip/def.h"
-#include "lwip/sio.h"
-#include "lwip/stats.h"
-#include "lwip/mem.h"
-#include "lwip/netif.h"
-#include "lwip/sys.h"
-#include "lwip/timers.h"
-
-/** Some defines for code we skip compared to the original pppd.
- * These are just here to minimise the use of the ugly "#if 0". */
-#define PPP_ADDITIONAL_CALLBACKS 0
-
-/** Some error checks to test for unsupported code */
-#if CBCP_SUPPORT
-#error "CBCP is not supported in lwIP PPP"
-#endif
-#if CCP_SUPPORT
-#error "CCP is not supported in lwIP PPP"
-#endif
-
-/*
- * pppd.h - PPP daemon global declarations.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
-/*
- * ppp_defs.h - PPP definitions.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- */
-
-#define TIMEOUT(f, a, t) do { sys_untimeout((f), (a)); sys_timeout((t)*1000, (f), (a)); } while(0)
-#define UNTIMEOUT(f, a) sys_untimeout((f), (a))
-
-
-#ifndef __u_char_defined
-
-/* Type definitions for BSD code. */
-typedef unsigned long u_long;
-typedef unsigned int u_int;
-typedef unsigned short u_short;
-typedef unsigned char u_char;
-
-#endif
-
-/*
- * Constants and structures defined by the internet system,
- * Per RFC 790, September 1981, and numerous additions.
- */
-
-/*
- * The basic PPP frame.
- */
-#define PPP_HDRLEN 4 /* octets for standard ppp header */
-#define PPP_FCSLEN 2 /* octets for FCS */
-
-
-/*
- * Significant octet values.
- */
-#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */
-#define PPP_UI 0x03 /* Unnumbered Information */
-#define PPP_FLAG 0x7e /* Flag Sequence */
-#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */
-#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */
-
-/*
- * Protocol field values.
- */
-#define PPP_IP 0x21 /* Internet Protocol */
-#define PPP_AT 0x29 /* AppleTalk Protocol */
-#define PPP_VJC_COMP 0x2d /* VJ compressed TCP */
-#define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */
-#define PPP_COMP 0xfd /* compressed packet */
-#define PPP_IPCP 0x8021 /* IP Control Protocol */
-#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */
-#define PPP_CCP 0x80fd /* Compression Control Protocol */
-#define PPP_LCP 0xc021 /* Link Control Protocol */
-#define PPP_PAP 0xc023 /* Password Authentication Protocol */
-#define PPP_LQR 0xc025 /* Link Quality Report protocol */
-#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */
-#define PPP_CBCP 0xc029 /* Callback Control Protocol */
-
-/*
- * Values for FCS calculations.
- */
-#define PPP_INITFCS 0xffff /* Initial FCS value */
-#define PPP_GOODFCS 0xf0b8 /* Good final FCS value */
-#define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
-
-/*
- * Extended asyncmap - allows any character to be escaped.
- */
-typedef u_char ext_accm[32];
-
-/*
- * What to do with network protocol (NP) packets.
- */
-enum NPmode {
- NPMODE_PASS, /* pass the packet through */
- NPMODE_DROP, /* silently drop the packet */
- NPMODE_ERROR, /* return an error */
- NPMODE_QUEUE /* save it up for later. */
-};
-
-/*
- * Inline versions of get/put char/short/long.
- * Pointer is advanced; we assume that both arguments
- * are lvalues and will already be in registers.
- * cp MUST be u_char *.
- */
-#define GETCHAR(c, cp) { \
- (c) = *(cp)++; \
-}
-#define PUTCHAR(c, cp) { \
- *(cp)++ = (u_char) (c); \
-}
-
-
-#define GETSHORT(s, cp) { \
- (s) = *(cp); (cp)++; (s) <<= 8; \
- (s) |= *(cp); (cp)++; \
-}
-#define PUTSHORT(s, cp) { \
- *(cp)++ = (u_char) ((s) >> 8); \
- *(cp)++ = (u_char) (s & 0xff); \
-}
-
-#define GETLONG(l, cp) { \
- (l) = *(cp); (cp)++; (l) <<= 8; \
- (l) |= *(cp); (cp)++; (l) <<= 8; \
- (l) |= *(cp); (cp)++; (l) <<= 8; \
- (l) |= *(cp); (cp)++; \
-}
-#define PUTLONG(l, cp) { \
- *(cp)++ = (u_char) ((l) >> 24); \
- *(cp)++ = (u_char) ((l) >> 16); \
- *(cp)++ = (u_char) ((l) >> 8); \
- *(cp)++ = (u_char) (l); \
-}
-
-
-#define INCPTR(n, cp) ((cp) += (n))
-#define DECPTR(n, cp) ((cp) -= (n))
-
-#define BCMP(s0, s1, l) memcmp((u_char *)(s0), (u_char *)(s1), (l))
-#define BCOPY(s, d, l) MEMCPY((d), (s), (l))
-#define BZERO(s, n) memset(s, 0, n)
-
-#if PPP_DEBUG
-#define PRINTMSG(m, l) { m[l] = '\0'; LWIP_DEBUGF(LOG_INFO, ("Remote message: %s\n", m)); }
-#else /* PPP_DEBUG */
-#define PRINTMSG(m, l)
-#endif /* PPP_DEBUG */
-
-/*
- * MAKEHEADER - Add PPP Header fields to a packet.
- */
-#define MAKEHEADER(p, t) { \
- PUTCHAR(PPP_ALLSTATIONS, p); \
- PUTCHAR(PPP_UI, p); \
- PUTSHORT(t, p); }
-
-/*************************
-*** PUBLIC DEFINITIONS ***
-*************************/
-
-/* Error codes. */
-#define PPPERR_NONE 0 /* No error. */
-#define PPPERR_PARAM -1 /* Invalid parameter. */
-#define PPPERR_OPEN -2 /* Unable to open PPP session. */
-#define PPPERR_DEVICE -3 /* Invalid I/O device for PPP. */
-#define PPPERR_ALLOC -4 /* Unable to allocate resources. */
-#define PPPERR_USER -5 /* User interrupt. */
-#define PPPERR_CONNECT -6 /* Connection lost. */
-#define PPPERR_AUTHFAIL -7 /* Failed authentication challenge. */
-#define PPPERR_PROTOCOL -8 /* Failed to meet protocol. */
-
-/*
- * PPP IOCTL commands.
- */
-/*
- * Get the up status - 0 for down, non-zero for up. The argument must
- * point to an int.
- */
-#define PPPCTLG_UPSTATUS 100 /* Get the up status - 0 down else up */
-#define PPPCTLS_ERRCODE 101 /* Set the error code */
-#define PPPCTLG_ERRCODE 102 /* Get the error code */
-#define PPPCTLG_FD 103 /* Get the fd associated with the ppp */
-
-/************************
-*** PUBLIC DATA TYPES ***
-************************/
-
-/*
- * The following struct gives the addresses of procedures to call
- * for a particular protocol.
- */
-struct protent {
- u_short protocol; /* PPP protocol number */
- /* Initialization procedure */
- void (*init) (int unit);
- /* Process a received packet */
- void (*input) (int unit, u_char *pkt, int len);
- /* Process a received protocol-reject */
- void (*protrej) (int unit);
- /* Lower layer has come up */
- void (*lowerup) (int unit);
- /* Lower layer has gone down */
- void (*lowerdown) (int unit);
- /* Open the protocol */
- void (*open) (int unit);
- /* Close the protocol */
- void (*close) (int unit, char *reason);
-#if PPP_ADDITIONAL_CALLBACKS
- /* Print a packet in readable form */
- int (*printpkt) (u_char *pkt, int len,
- void (*printer) (void *, char *, ...),
- void *arg);
- /* Process a received data packet */
- void (*datainput) (int unit, u_char *pkt, int len);
-#endif /* PPP_ADDITIONAL_CALLBACKS */
- int enabled_flag; /* 0 if protocol is disabled */
- char *name; /* Text name of protocol */
-#if PPP_ADDITIONAL_CALLBACKS
- /* Check requested options, assign defaults */
- void (*check_options) (u_long);
- /* Configure interface for demand-dial */
- int (*demand_conf) (int unit);
- /* Say whether to bring up link for this pkt */
- int (*active_pkt) (u_char *pkt, int len);
-#endif /* PPP_ADDITIONAL_CALLBACKS */
-};
-
-/*
- * The following structure records the time in seconds since
- * the last NP packet was sent or received.
- */
-struct ppp_idle {
- u_short xmit_idle; /* seconds since last NP packet sent */
- u_short recv_idle; /* seconds since last NP packet received */
-};
-
-struct ppp_settings {
-
- u_int disable_defaultip : 1; /* Don't use hostname for default IP addrs */
- u_int auth_required : 1; /* Peer is required to authenticate */
- u_int explicit_remote : 1; /* remote_name specified with remotename opt */
- u_int refuse_pap : 1; /* Don't wanna auth. ourselves with PAP */
- u_int refuse_chap : 1; /* Don't wanna auth. ourselves with CHAP */
- u_int usehostname : 1; /* Use hostname for our_name */
- u_int usepeerdns : 1; /* Ask peer for DNS adds */
-
- u_short idle_time_limit; /* Shut down link if idle for this long */
- int maxconnect; /* Maximum connect time (seconds) */
-
- char user [MAXNAMELEN + 1]; /* Username for PAP */
- char passwd [MAXSECRETLEN + 1]; /* Password for PAP, secret for CHAP */
- char our_name [MAXNAMELEN + 1]; /* Our name for authentication purposes */
- char remote_name[MAXNAMELEN + 1]; /* Peer's name for authentication */
-};
-
-struct ppp_addrs {
- ip_addr_t our_ipaddr, his_ipaddr, netmask, dns1, dns2;
-};
-
-/*****************************
-*** PUBLIC DATA STRUCTURES ***
-*****************************/
-
-/* Buffers for outgoing packets. */
-extern u_char outpacket_buf[NUM_PPP][PPP_MRU+PPP_HDRLEN];
-
-extern struct ppp_settings ppp_settings;
-
-extern struct protent *ppp_protocols[]; /* Table of pointers to supported protocols */
-
-
-/***********************
-*** PUBLIC FUNCTIONS ***
-***********************/
-
-/* Initialize the PPP subsystem. */
-void pppInit(void);
-
-/* Warning: Using PPPAUTHTYPE_ANY might have security consequences.
- * RFC 1994 says:
- *
- * In practice, within or associated with each PPP server, there is a
- * database which associates "user" names with authentication
- * information ("secrets"). It is not anticipated that a particular
- * named user would be authenticated by multiple methods. This would
- * make the user vulnerable to attacks which negotiate the least secure
- * method from among a set (such as PAP rather than CHAP). If the same
- * secret was used, PAP would reveal the secret to be used later with
- * CHAP.
- *
- * Instead, for each user name there should be an indication of exactly
- * one method used to authenticate that user name. If a user needs to
- * make use of different authentication methods under different
- * circumstances, then distinct user names SHOULD be employed, each of
- * which identifies exactly one authentication method.
- *
- */
-enum pppAuthType {
- PPPAUTHTYPE_NONE,
- PPPAUTHTYPE_ANY,
- PPPAUTHTYPE_PAP,
- PPPAUTHTYPE_CHAP
-};
-
-void pppSetAuth(enum pppAuthType authType, const char *user, const char *passwd);
-
-/*
- * Open a new PPP connection using the given serial I/O device.
- * This initializes the PPP control block but does not
- * attempt to negotiate the LCP session.
- * Return a new PPP connection descriptor on success or
- * an error code (negative) on failure.
- */
-int pppOverSerialOpen(sio_fd_t fd, void (*linkStatusCB)(void *ctx, int errCode, void *arg), void *linkStatusCtx);
-
-/*
- * Open a new PPP Over Ethernet (PPPOE) connection.
- */
-int pppOverEthernetOpen(struct netif *ethif, const char *service_name, const char *concentrator_name, void (*linkStatusCB)(void *ctx, int errCode, void *arg), void *linkStatusCtx);
-
-/* for source code compatibility */
-#define pppOpen(fd,cb,ls) pppOverSerialOpen(fd,cb,ls)
-
-/*
- * Close a PPP connection and release the descriptor.
- * Any outstanding packets in the queues are dropped.
- * Return 0 on success, an error code on failure.
- */
-int pppClose(int pd);
-
-/*
- * Indicate to the PPP process that the line has disconnected.
- */
-void pppSigHUP(int pd);
-
-/*
- * Get and set parameters for the given connection.
- * Return 0 on success, an error code on failure.
- */
-int pppIOCtl(int pd, int cmd, void *arg);
-
-/*
- * Return the Maximum Transmission Unit for the given PPP connection.
- */
-u_short pppMTU(int pd);
-
-/*
- * Write n characters to a ppp link.
- * RETURN: >= 0 Number of characters written, -1 Failed to write to device.
- */
-int pppWrite(int pd, const u_char *s, int n);
-
-void pppInProcOverEthernet(int pd, struct pbuf *pb);
-
-struct pbuf *pppSingleBuf(struct pbuf *p);
-
-void pppLinkTerminated(int pd);
-
-void pppLinkDown(int pd);
-
-void pppos_input(int pd, u_char* data, int len);
-
-/* Configure i/f transmit parameters */
-void ppp_send_config (int, u16_t, u32_t, int, int);
-/* Set extended transmit ACCM */
-void ppp_set_xaccm (int, ext_accm *);
-/* Configure i/f receive parameters */
-void ppp_recv_config (int, int, u32_t, int, int);
-/* Find out how long link has been idle */
-int get_idle_time (int, struct ppp_idle *);
-
-/* Configure VJ TCP header compression */
-int sifvjcomp (int, int, u8_t, u8_t);
-/* Configure i/f down (for IP) */
-int sifup (int);
-/* Set mode for handling packets for proto */
-int sifnpmode (int u, int proto, enum NPmode mode);
-/* Configure i/f down (for IP) */
-int sifdown (int);
-/* Configure IP addresses for i/f */
-int sifaddr (int, u32_t, u32_t, u32_t, u32_t, u32_t);
-/* Reset i/f IP addresses */
-int cifaddr (int, u32_t, u32_t);
-/* Create default route through i/f */
-int sifdefaultroute (int, u32_t, u32_t);
-/* Delete default route through i/f */
-int cifdefaultroute (int, u32_t, u32_t);
-
-/* Get appropriate netmask for address */
-u32_t GetMask (u32_t);
-
-#if LWIP_NETIF_STATUS_CALLBACK
-void ppp_set_netif_statuscallback(int pd, netif_status_callback_fn status_callback);
-#endif /* LWIP_NETIF_STATUS_CALLBACK */
-#if LWIP_NETIF_LINK_CALLBACK
-void ppp_set_netif_linkcallback(int pd, netif_status_callback_fn link_callback);
-#endif /* LWIP_NETIF_LINK_CALLBACK */
-
-#endif /* PPP_SUPPORT */
-
-#endif /* PPP_H */
--- a/LPC2368/lwip/netif/ppp/pppdebug.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/***************************************************************************** -* pppdebug.h - System debugging utilities. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1998 Global Election Systems Inc. -* portions Copyright (c) 2001 by Cognizant Pty Ltd. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY (please don't use tabs!) -* -* 03-01-01 Marc Boucher <marc@mbsi.ca> -* Ported to lwIP. -* 98-07-29 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc. -* Original. -* -***************************************************************************** -*/ -#ifndef PPPDEBUG_H -#define PPPDEBUG_H - -/* Trace levels. */ -#define LOG_CRITICAL (PPP_DEBUG | LWIP_DBG_LEVEL_SEVERE) -#define LOG_ERR (PPP_DEBUG | LWIP_DBG_LEVEL_SEVERE) -#define LOG_NOTICE (PPP_DEBUG | LWIP_DBG_LEVEL_WARNING) -#define LOG_WARNING (PPP_DEBUG | LWIP_DBG_LEVEL_WARNING) -#define LOG_INFO (PPP_DEBUG) -#define LOG_DETAIL (PPP_DEBUG) -#define LOG_DEBUG (PPP_DEBUG) - - -#define TRACELCP PPP_DEBUG - -#if PPP_DEBUG - -#define AUTHDEBUG(a, b) LWIP_DEBUGF(a, b) -#define IPCPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define UPAPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define LCPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define FSMDEBUG(a, b) LWIP_DEBUGF(a, b) -#define CHAPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define PPPDEBUG(a, b) LWIP_DEBUGF(a, b) - -#else /* PPP_DEBUG */ - -#define AUTHDEBUG(a, b) -#define IPCPDEBUG(a, b) -#define UPAPDEBUG(a, b) -#define LCPDEBUG(a, b) -#define FSMDEBUG(a, b) -#define CHAPDEBUG(a, b) -#define PPPDEBUG(a, b) - -#endif /* PPP_DEBUG */ - -#endif /* PPPDEBUG_H */
--- a/LPC2368/lwip/netif/ppp/randm.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/***************************************************************************** -* randm.h - Random number generator header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* Copyright (c) 1998 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher <marc@mbsi.ca> -* Ported to lwIP. -* 98-05-29 Guy Lancaster <glanca@gesn.com>, Global Election Systems Inc. -* Extracted from avos. -*****************************************************************************/ - -#ifndef RANDM_H -#define RANDM_H - -/*********************** -*** PUBLIC FUNCTIONS *** -***********************/ -/* - * Initialize the random number generator. - */ -void avRandomInit(void); - -/* - * Churn the randomness pool on a random event. Call this early and often - * on random and semi-random system events to build randomness in time for - * usage. For randomly timed events, pass a null pointer and a zero length - * and this will use the system timer and other sources to add randomness. - * If new random data is available, pass a pointer to that and it will be - * included. - */ -void avChurnRand(char *randData, u32_t randLen); - -/* - * Randomize our random seed value. To be called for truely random events - * such as user operations and network traffic. - */ -#if MD5_SUPPORT -#define avRandomize() avChurnRand(NULL, 0) -#else /* MD5_SUPPORT */ -void avRandomize(void); -#endif /* MD5_SUPPORT */ - -/* - * Use the random pool to generate random data. This degrades to pseudo - * random when used faster than randomness is supplied using churnRand(). - * Thus it's important to make sure that the results of this are not - * published directly because one could predict the next result to at - * least some degree. Also, it's important to get a good seed before - * the first use. - */ -void avGenRand(char *buf, u32_t bufLen); - -/* - * Return a new random number. - */ -u32_t avRandom(void); - - -#endif /* RANDM_H */
--- a/LPC2368/lwip/netif/ppp/vj.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
- * Definitions for tcp compression routines.
- *
- * $Id: vj.h,v 1.7 2010/02/22 17:52:09 goldsimon Exp $
- *
- * Copyright (c) 1989 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
- * - Initial distribution.
- */
-
-#ifndef VJ_H
-#define VJ_H
-
-#include "lwip/ip.h"
-#include "lwip/tcp_impl.h"
-
-#define MAX_SLOTS 16 /* must be > 2 and < 256 */
-#define MAX_HDR 128
-
-/*
- * Compressed packet format:
- *
- * The first octet contains the packet type (top 3 bits), TCP
- * 'push' bit, and flags that indicate which of the 4 TCP sequence
- * numbers have changed (bottom 5 bits). The next octet is a
- * conversation number that associates a saved IP/TCP header with
- * the compressed packet. The next two octets are the TCP checksum
- * from the original datagram. The next 0 to 15 octets are
- * sequence number changes, one change per bit set in the header
- * (there may be no changes and there are two special cases where
- * the receiver implicitly knows what changed -- see below).
- *
- * There are 5 numbers which can change (they are always inserted
- * in the following order): TCP urgent pointer, window,
- * acknowlegement, sequence number and IP ID. (The urgent pointer
- * is different from the others in that its value is sent, not the
- * change in value.) Since typical use of SLIP links is biased
- * toward small packets (see comments on MTU/MSS below), changes
- * use a variable length coding with one octet for numbers in the
- * range 1 - 255 and 3 octets (0, MSB, LSB) for numbers in the
- * range 256 - 65535 or 0. (If the change in sequence number or
- * ack is more than 65535, an uncompressed packet is sent.)
- */
-
-/*
- * Packet types (must not conflict with IP protocol version)
- *
- * The top nibble of the first octet is the packet type. There are
- * three possible types: IP (not proto TCP or tcp with one of the
- * control flags set); uncompressed TCP (a normal IP/TCP packet but
- * with the 8-bit protocol field replaced by an 8-bit connection id --
- * this type of packet syncs the sender & receiver); and compressed
- * TCP (described above).
- *
- * LSB of 4-bit field is TCP "PUSH" bit (a worthless anachronism) and
- * is logically part of the 4-bit "changes" field that follows. Top
- * three bits are actual packet type. For backward compatibility
- * and in the interest of conserving bits, numbers are chosen so the
- * IP protocol version number (4) which normally appears in this nibble
- * means "IP packet".
- */
-
-/* packet types */
-#define TYPE_IP 0x40
-#define TYPE_UNCOMPRESSED_TCP 0x70
-#define TYPE_COMPRESSED_TCP 0x80
-#define TYPE_ERROR 0x00
-
-/* Bits in first octet of compressed packet */
-#define NEW_C 0x40 /* flag bits for what changed in a packet */
-#define NEW_I 0x20
-#define NEW_S 0x08
-#define NEW_A 0x04
-#define NEW_W 0x02
-#define NEW_U 0x01
-
-/* reserved, special-case values of above */
-#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */
-#define SPECIAL_D (NEW_S|NEW_A|NEW_W|NEW_U) /* unidirectional data */
-#define SPECIALS_MASK (NEW_S|NEW_A|NEW_W|NEW_U)
-
-#define TCP_PUSH_BIT 0x10
-
-
-/*
- * "state" data for each active tcp conversation on the wire. This is
- * basically a copy of the entire IP/TCP header from the last packet
- * we saw from the conversation together with a small identifier
- * the transmit & receive ends of the line use to locate saved header.
- */
-struct cstate {
- struct cstate *cs_next; /* next most recently used state (xmit only) */
- u_short cs_hlen; /* size of hdr (receive only) */
- u_char cs_id; /* connection # associated with this state */
- u_char cs_filler;
- union {
- char csu_hdr[MAX_HDR];
- struct ip_hdr csu_ip; /* ip/tcp hdr from most recent packet */
- } vjcs_u;
-};
-#define cs_ip vjcs_u.csu_ip
-#define cs_hdr vjcs_u.csu_hdr
-
-
-struct vjstat {
- unsigned long vjs_packets; /* outbound packets */
- unsigned long vjs_compressed; /* outbound compressed packets */
- unsigned long vjs_searches; /* searches for connection state */
- unsigned long vjs_misses; /* times couldn't find conn. state */
- unsigned long vjs_uncompressedin; /* inbound uncompressed packets */
- unsigned long vjs_compressedin; /* inbound compressed packets */
- unsigned long vjs_errorin; /* inbound unknown type packets */
- unsigned long vjs_tossed; /* inbound packets tossed because of error */
-};
-
-/*
- * all the state data for one serial line (we need one of these per line).
- */
-struct vjcompress {
- struct cstate *last_cs; /* most recently used tstate */
- u_char last_recv; /* last rcvd conn. id */
- u_char last_xmit; /* last sent conn. id */
- u_short flags;
- u_char maxSlotIndex;
- u_char compressSlot; /* Flag indicating OK to compress slot ID. */
-#if LINK_STATS
- struct vjstat stats;
-#endif
- struct cstate tstate[MAX_SLOTS]; /* xmit connection states */
- struct cstate rstate[MAX_SLOTS]; /* receive connection states */
-};
-
-/* flag values */
-#define VJF_TOSS 1U /* tossing rcvd frames because of input err */
-
-extern void vj_compress_init (struct vjcompress *comp);
-extern u_int vj_compress_tcp (struct vjcompress *comp, struct pbuf *pb);
-extern void vj_uncompress_err (struct vjcompress *comp);
-extern int vj_uncompress_uncomp(struct pbuf *nb, struct vjcompress *comp);
-extern int vj_uncompress_tcp (struct pbuf **nb, struct vjcompress *comp);
-
-#endif /* VJ_H */
--- a/LPC2368/netCfg.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -//This file has been auto-generated, please do not modify here. -#ifndef __ETHERNETNETIF_CONFIG_H -#define TARGET_LPC2368 1 -#define NET_TELIT_STACK 0 -#define NET_GPRS 0 -#define NET_PPP 0 -#define NET_ZG2100 0 -#define NET_GPRS_MODULE 0 -#define NET_ETH 1 -#define NET_USB_SERIAL 0 -#define NET_CFG_H 1 -#define NET_USB 0 -#define NET_LWIP_STACK 1 -#endif
--- a/LPC2368/services/http/server/HTTPRequestDispatcher.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef HTTP_REQUEST_DISPATCHER_H
-#define HTTP_REQUEST_DISPATCHER_H
-
-class HTTPServer;
-
-#include "api/TCPSocket.h"
-#include "HTTPServer.h"
-#include "core/netservice.h"
-
-#include "mbed.h"
-
-#define HTTP_REQUEST_TIMEOUT 5000
-
-#include <string>
-using std::string;
-
-class HTTPRequestDispatcher : public NetService
-{
-public:
- HTTPRequestDispatcher(HTTPServer* pSvr, TCPSocket* pTCPSocket);
- virtual ~HTTPRequestDispatcher();
-
-private:
-
- enum HTTP_METH
- {
- HTTP_GET,
- HTTP_POST,
- HTTP_HEAD
- };
-
- void dispatchRequest();
-
- virtual void close(); //Close TCPSocket and destroy data
-
- void onTCPSocketEvent(TCPSocketEvent e);
-
- void onTimeout(); //Connection has timed out
-
- bool getRequest(string* path, string* meth);
-
- HTTPServer* m_pSvr;
- TCPSocket* m_pTCPSocket;
-
- Timeout m_watchdog;
- bool m_closed;
-};
-
-#endif
--- a/LPC2368/services/http/server/HTTPRequestHandler.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/**
-HTTP Request Handler header file.
-*/
-
-#ifndef HTTP_REQUEST_HANDLER_H
-#define HTTP_REQUEST_HANDLER_H
-
-#include "api/TCPSocket.h"
-//#include "HTTPServer.h"
-
-#include "mbed.h"
-#include "core/netservice.h"
-
-#include <string>
-using std::string;
-
-#include <map>
-using std::map;
-
-///HTTP Server's generic request handler
-class HTTPRequestHandler : public NetService
-{
-public:
- ///Instantiated by the HTTP Server
- HTTPRequestHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket);
- virtual ~HTTPRequestHandler();
-
-//protected:
- virtual void doGet() = 0;
- virtual void doPost() = 0;
- virtual void doHead() = 0;
-
- virtual void onReadable() = 0; //Data has been read
- virtual void onWriteable() = 0; //Data has been written & buf is free
- virtual void onTimeout(); //Connection has timed out
- virtual void onClose() = 0; //Connection is closing
-
- virtual void close(); //Close socket and destroy data
-
-protected:
- map<string, string>& reqHeaders() /*const*/;
- string& path() /*const*/;
- int dataLen() const;
- int readData(char* buf, int len);
- string& rootPath() /*const*/;
-
- void setErrCode(int errc);
- void setContentLen(int len);
-
- map<string, string>& respHeaders();
- int writeData(const char* buf, int len);
-
- void setTimeout(int ms);
- void resetTimeout();
-
-private:
- void readHeaders(); //Called at instanciation
- void writeHeaders(); //Called at the first writeData call
- void onTCPSocketEvent(TCPSocketEvent e);
-
- TCPSocket* m_pTCPSocket;
- map<string, string> m_reqHeaders;
- map<string, string> m_respHeaders;
- string m_rootPath;
- string m_path;
- int m_errc; //Response code
-
- Timeout m_watchdog;
- int m_timeout;
-
- bool m_closed;
- bool m_headersSent;
-
- int readLine(char* str, int maxLen);
-
-};
-
-#endif
--- a/LPC2368/services/http/server/HTTPServer.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/** \file
-HTTP Server header file
-*/
-
-#ifndef HTTP_SERVER_H
-#define HTTP_SERVER_H
-
-class HTTPRequestHandler;
-class HTTPRequestDispatcher;
-
-#include "core/net.h"
-#include "HTTPRequestHandler.h"
-#include "HTTPRequestDispatcher.h"
-
-#include <string>
-using std::string;
-
-#include <map>
-using std::map;
-
-///A simple HTTP server implementation
-/**
-The HTTPServer is composed of:
-- The actual server (HTTPServer)
-- A request dispatcher, instanciated on each request (HTTPRequestDispatcher)
-- Request handlers instanciated by the dispatcher(deriving from HTTPRequestHandler)
-*/
-class HTTPServer
-{
-public:
- ///Instantiates the HTTP Server
- HTTPServer();
- ~HTTPServer();
-
- struct handlersComp //Used to order handlers in the right way
- {
- bool operator() (const string& handler1, const string& handler2) const
- {
- //The first handler is longer than the second one
- if (handler1.length() > handler2.length())
- return true; //Returns true if handler1 is to appear before handler2
- else if (handler1.length() < handler2.length())
- return false;
- else //To avoid the == case, sort now by address
- return ((&handler1)>(&handler2));
- }
- };
-
- ///Adds a handler
- /**
- Appends a handler to the handlers list
- @param T : class which will be instanciated to serve these requests
- @param path : requests starting with this path will be served using this handler
- */
- template<typename T>
- void addHandler(const char* path) //Template decl in header
- { m_lpHandlers[path] = &T::inst; }
-
- ///Starts listening
- /**
- Binds server to a specific port and starts listening
- @param port : port on which to listen for incoming connections
- */
- void bind(int port = 80);
-
-private:
- friend class HTTPRequestDispatcher;
-
- void onTCPSocketEvent(TCPSocketEvent e);
-
- TCPSocket* m_pTCPSocket;
- map< string, HTTPRequestHandler*(*)(const char*, const char*, TCPSocket*), handlersComp > m_lpHandlers;
-
-};
-
-//Including handlers here for more convenience
-#include "impl/RPCHandler.h"
-#include "impl/FSHandler.h"
-#include "impl/SimpleHandler.h"
-
-#endif
--- a/LPC2368/services/http/server/impl/FSHandler.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef FS_HANDLER_H
-#define FS_HANDLER_H
-
-#include "../HTTPRequestHandler.h"
-#include "mbed.h"
-
-#include <map>
-using std::map;
-
-#include <string>
-using std::string;
-
-class FSHandler : public HTTPRequestHandler
-{
-public:
- FSHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket);
- virtual ~FSHandler();
-
- static void mount(const string& fsPath, const string& rootPath);
-
-//protected:
- static inline HTTPRequestHandler* inst(const char* rootPath, const char* path, TCPSocket* pTCPSocket) { return new FSHandler(rootPath, path, pTCPSocket); } //if we ever could do static virtual functions, this would be one
-
- virtual void doGet();
- virtual void doPost();
- virtual void doHead();
-
- virtual void onReadable(); //Data has been read
- virtual void onWriteable(); //Data has been written & buf is free
- virtual void onClose(); //Connection is closing
-
-private:
- FILE* m_fp;
- bool m_err404;
- static map<string,string> m_lFsPath;
-};
-
-#endif
--- a/LPC2368/services/http/server/impl/RPCHandler.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef RPC_HANDLER_H
-#define RPC_HANDLER_H
-
-#include "../HTTPRequestHandler.h"
-
-class RPCHandler : public HTTPRequestHandler
-{
-public:
- RPCHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket);
- virtual ~RPCHandler();
-
-//protected:
- static inline HTTPRequestHandler* inst(const char* rootPath, const char* path, TCPSocket* pTCPSocket) { return new RPCHandler(rootPath, path, pTCPSocket); } //if we ever could do static virtual functions, this would be one
-
- virtual void doGet();
- virtual void doPost();
- virtual void doHead();
-
- virtual void onReadable(); //Data has been read
- virtual void onWriteable(); //Data has been written & buf is free
- virtual void onClose(); //Connection is closing
-
-protected:
- void cleanReq(char* data);
-};
-
-#endif
--- a/LPC2368/services/http/server/impl/SimpleHandler.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef SIMPLE_HANDLER_H
-#define SIMPLE_HANDLER_H
-
-#include "../HTTPRequestHandler.h"
-
-class SimpleHandler : public HTTPRequestHandler
-{
-public:
- SimpleHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket);
- virtual ~SimpleHandler();
-
-//protected:
- static inline HTTPRequestHandler* inst(const char* rootPath, const char* path, TCPSocket* pTCPSocket) { return new SimpleHandler(rootPath, path, pTCPSocket); } //if we ever could do static virtual functions, this would be one
-
- virtual void doGet();
- virtual void doPost();
- virtual void doHead();
-
- virtual void onReadable(); //Data has been read
- virtual void onWriteable(); //Data has been written & buf is free
- virtual void onClose(); //Connection is closing
-};
-
-#endif
--- a/LPC2368/services/http/util/base64.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef BASE64_H
-#define BASE64_H
-
-#include <string>
-using std::string;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-//Originaly from Rolf's iputil.h
-
-unsigned int base64enc_len(const char *str);
-
-void base64enc(const char *input, unsigned int length, char *output);
-
-#ifdef __cplusplus
-}
-#endif
-
-class Base64
-{
-public:
- static string encode(const string& str)
- {
- char* out = new char[ base64enc_len(str.c_str()) ];
- base64enc(str.c_str(), str.length(), out);
- string res(out);
- delete[] out;
- return res;
- }
-};
-
-#endif /* LWIP_UTILS_H */
--- a/LPC2368/services/http/util/url.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-
-/*
-Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-#ifndef URL_H
-#define URL_H
-
-#include "core/ipaddr.h"
-
-#include <string>
-using std::string;
-
-#include "mbed.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-char *url_encode(char *str);
-char *url_decode(char *str);
-
-#ifdef __cplusplus
-}
-#endif
-
-class Url
-{
-public:
- static string encode(const string& url)
- {
- char* c_res = url_encode( (char*) url.c_str() );
- string res(c_res);
- free(c_res); //Alloc'ed in url_encode()
- return res;
- }
-
- static string decode(const string& url)
- {
- char* c_res = url_decode( (char*) url.c_str() );
- string res(c_res);
- free(c_res); //Alloc'ed in url_decode()
- return res;
- }
-
- Url();
-
- string getProtocol();
- string getHost();
- bool getHostIp(IpAddr* ip); //If host is in IP form, return true & proper object by ptr
- uint16_t getPort();
- string getPath();
-
- void setProtocol(string protocol);
- void setHost(string host);
- void setPort(uint16_t port);
- void setPath(string path);
-
- void fromString(string str);
- string toString();
-
-private:
- string m_protocol;
- string m_host;
- uint16_t m_port;
- string m_path;
-
-};
-
-#endif /* LWIP_UTILS_H */
--- a/MODSERIAL.lib Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/AjK/code/MODSERIAL/#a93a62eeeb9d
--- a/ROBO_TX_FW.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,371 +0,0 @@
-//=============================================================================
-// Description | Header file with definition of the software interface
-// | to the ROBO TX Controller firmware.
-// | Can be used for building C-programs which can run
-// | under control of the ROBO TX Controller firmware in
-// | download (local) mode or for building PC-programs which
-// | can communicate with the ROBO TX Controller firmware in
-// | online mode.
-// |
-// Copyright | � 2009 MSC Vertriebs GmbH, Germany.
-// |
-// | This software is distributed in the hope that it will be useful,
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-//=============================================================================
-
-#ifndef __ROBO_TX_FW_H__
-#define __ROBO_TX_FW_H__
-
-
-#define N_CNT 4 // number of counters
-#define N_PWM_CHAN 8 // number of PWM channels
-#define N_MOTOR 4 // number of motors
-#define N_UNI 8 // number of universal inputs
-
-// 5kOhm range
-#define R_MIN 10 // [Ohm]
-#define R_MAX 4999 // [Ohm]
-#define R_OVR 5000 // [Ohm] overload
-
-// 10V range
-#define U_MIN 0 // [mV]
-#define U_MAX 9999 // [mV]
-#define U_OVR 10000 // [mV] overload
-
-// Ultrasonic Sensor range
-#define ULTRASONIC_MIN 2 // [cm]
-#define ULTRASONIC_MAX 1023 // [cm]
-#define ULTRASONIC_OVR 1024 // [cm] overload
-#define NO_ULTRASONIC 4096 // not present
-
-// Motor outputs PWM values range
-#define DUTY_MIN 0
-#define DUTY_MAX 512
-
-// Length of strings
-#define DEV_NAME_LEN_MAX 16 // "ROBO TX-xxxxxxxx"
-#define BLUETOOTH_ADDR_LEN 17 // "xx:xx:xx:xx:xx:xx"
-#define DISPL_MSG_LEN_MAX 64 // max length of a pop-up display message
-
-
-// Identifiers of the Transfer Area
-enum ta_id_e
-{
- TA_LOCAL = 0, // Transfer Area for local Controller. Corresponds to the Controller
- // on which program is currently running in download (local) mode or
- // to the remotely controlled Controller (seen from controlled device,
- // not from controlling device) in online mode.
- TA_EXT_1, // Transfer Area for Extension 1 Controller
- TA_EXT_2, // Transfer Area for Extension 2 Controller
- TA_EXT_3, // Transfer Area for Extension 3 Controller
- TA_EXT_4, // Transfer Area for Extension 4 Controller
- TA_EXT_5, // Transfer Area for Extension 5 Controller
- TA_EXT_6, // Transfer Area for Extension 6 Controller
- TA_EXT_7, // Transfer Area for Extension 7 Controller
- TA_EXT_8, // Transfer Area for Extension 8 Controller
- TA_COUNT // Number of Transfer Areas in array = 9
-};
-
-#define N_EXT (TA_COUNT - 1) // Number of extension Controllers = 8
-
-
-// Device (Controller) functioning modes
-enum dev_mode_e
-{
- DEV_MODE_LOCAL = 0,
- DEV_MODE_ONLINE,
- DEV_MODE_INVALID
-};
-
-
-// State of connection to an extension device (Controller)
-enum ext_dev_connect_state_e
-{
- EXT_DEV_OFFLINE = 0,
- EXT_DEV_ONLINE,
- EXT_DEV_INVALID
-};
-
-
-// Modes of universal inputs
-enum input_mode_e
-{
- MODE_U = 0,
- MODE_R = 1,
- MODE_ULTRASONIC = 3,
- MODE_INVALID
-};
-
-
-// Program states
-enum pgm_state_e
-{
- PGM_STATE_INVALID = 0,
- PGM_STATE_RUN,
- PGM_STATE_STOP
-};
-
-
-// Timer units for GetSystemTime hook function
-enum TimerUnit
-{
- TIMER_UNIT_INVALID = 0,
- TIMER_UNIT_SECONDS = 2,
- TIMER_UNIT_MILLISECONDS = 3,
- TIMER_UNIT_MICROSECONDS = 4
-};
-
-
-//=============================================================================
-// Structures for Transfer Area (TA)
-//=============================================================================
-
-
-// Program information, 8 bytes
-typedef struct
-{
- char * name; // Name of a program with a full path, for example, "/ramdisk/Program_1"
- UINT8 state; // enum pgm_state_e
- char reserved[3];
-} PGM_INFO;
-
-
-// Display message, 36 bytes. Used to show pop-up message box on the boards display
-typedef struct
-{
- unsigned char id; // Should be increased by 1 each time a new pop-up message is to be shown
- char text[DISPL_MSG_LEN_MAX + 1];
- char reserved[2];
-} DISPLAY_MSG;
-
-
-// Display frame, 8 bytes. Used to refresh boards display with a bitmap image frame
-typedef struct
-{
- unsigned char * frame; // Contents of a frame as a 128x64 pixels bitmap
- UINT16 id; // Should be increased by 1 each time a new display frame is to be shown
- BOOL16 is_pgm_master_of_display; // ++ if program wants to have control over display,
- // i.e. image frame is displayed over firmware menus;
- // -- if program wants to return control over display
- // to the firmware menus
-} DISPLAY_FRAME;
-
-
-// Version structure definition, 4 bytes
-typedef union
-{
- unsigned long abcd;
- struct
- {
- unsigned char a;
- unsigned char b;
- unsigned char c;
- unsigned char d;
- } part;
-} FT_VER;
-
-
-// Versions of hardware and firmware components, 16 bytes
-typedef struct
-{
- FT_VER hardware; // Version of hardware (hardware.part.a = 'A' or 'B' or 'C')
- FT_VER firmware; // Version of firmware ("V %d.%02d, DLL %d", firmware.part.c,
- // firmware.part.d, firmware.part.b)
- FT_VER ta; // Version of transfer area ("V %d.%02d", ta.part.c, ta.part.d)
- char reserved[4];
-} FT_VERSION;
-
-
-// Info structure, 64 bytes
-typedef struct
-{
- char device_name[DEV_NAME_LEN_MAX + 1]; // Controller name
- char bt_addr[BLUETOOTH_ADDR_LEN + 1]; // Bluetooth address as a string
- char reserved;
- unsigned long ta_array_start_addr;
- unsigned long pgm_area_start_addr;
- unsigned long pgm_area_size;
- FT_VERSION version;
-} TA_INFO;
-
-
-// State structure, 36 bytes
-typedef struct
-{
- // Used by local program
- BOOL8 pgm_initialized;
- char reserved_1[7];
-
- // Public state info
- BOOL8 dev_mode; // enum dev_mode_e
- UCHAR8 id; // Should be increased by 1 each time something (except id fields)
- // is changed in this state structure
- UCHAR8 info_id; // Should be increased by 1 each time something is changed in info structure
- UCHAR8 config_id; // Should be increased by 1 each time something is changed in config structure
- BOOL8 ext_dev_connect_state[N_EXT]; // enum ext_dev_connect_state_e
- char reserved_2[8];
- PGM_INFO local_pgm; // Corresponds to the program currently being in the program memory
-} TA_STATE;
-
-
-// Universal inputs configuration, 4 bytes
-typedef struct
-{
- UINT8 mode; // enum input_mode_e
- BOOL8 digital; // FALSE = analog input, TRUE = digital input
- unsigned char reserved[2];
-} UNI_CONFIG;
-
-
-// Counter inputs configuration, 4 bytes
-typedef struct
-{
- UINT8 mode; // 0 = normal counter mode (change 0 -> 1 is counted)
- // 1 = inverse counter mode (change 1 -> 0 is counted)
- unsigned char reserved[3];
-} CNT_CONFIG;
-
-
-// Config structure, 88 bytes
-typedef struct
-{
- UINT8 pgm_state_req; // enum pgm_state_e, program state change request
- char reserved_1[3];
- BOOL8 motor[N_MOTOR]; // TRUE = corresponding outputs are used as a pair of motor outputs M1...M4,
- // FALSE = corresponding outputs are used as a pair of separate digital
- // PWM outputs O1...O8
- UNI_CONFIG uni[N_UNI];
- CNT_CONFIG cnt[N_CNT];
- char reserved_2[32];
-} TA_CONFIG;
-
-
-// Input structure, 44 bytes
-typedef struct
-{
- INT16 uni[N_UNI]; // Current values of the universal inputs
- INT16 cnt_in[N_CNT]; // Current levels (0 or 1) on the counter inputs according
- // to their configuration (normal or inverse)
- INT16 counter[N_CNT]; // Current values of the counter inputs
- INT16 display_button_left; // Number of milliseconds during which the left display button
- // is being kept pressed
- INT16 display_button_right; // Number of milliseconds during which the right display button
- // is being kept pressed
- INT16 motor_pos_reached[N_MOTOR]; // Set to 1 by motor control if target position
- // (distance from output structure) is reached
-} TA_INPUT;
-
-
-// Output structure, 36 bytes
-typedef struct
-{
- BOOL8 cnt_reset[N_CNT]; // Counter reset requests
- UINT8 master[N_MOTOR]; // If not 0, synchronize this channel with the given channel
- // (1:channel 0, ...)
- INT16 duty[N_PWM_CHAN]; // Selected motor outputs PWM values
- UINT16 distance[N_MOTOR]; // Selected distance (counter value) at which motor shall stop
- char reserved[4];
-} TA_OUTPUT;
-
-
-// Display structure, 44 bytes
-typedef struct
-{
- DISPLAY_MSG display_msg;
- DISPLAY_FRAME display_frame;
-} TA_DISPLAY;
-
-
-// Change structure (only for ftMscLib), 8 bytes
-typedef struct
-{
- char reserved_1[2];
- UINT8 ChangeStatus; // TRUE = there was a change in any of the following fields
- UINT8 ChangeUni; // There was a change of the input value (bit 0 = I1, bit 1 = I2, ...)
- UINT8 ChangeCntIn; // There was a change of the counter level (bit 0 = C1, bit 1 = C2, ...)
- UINT8 ChangeCounter; // There was a change of the counter value (bit 0 = C1, bit 1 = C2, ...)
- char reserved_2[2];
-} TA_CHANGE;
-
-
-// 16-bit timers, 12 bytes
-typedef struct
-{
- UINT16 Timer1ms;
- UINT16 Timer10ms;
- UINT16 Timer100ms;
- UINT16 Timer1s;
- UINT16 Timer10s;
- UINT16 Timer1min;
-} TA_TIMER;
-
-
-struct ta_s;
-
-// Hook table with pointers to the firmware functions,
-// that can be called by local program, 16 bytes
-typedef struct
-{
- // Informs the calling program if it can still run (return TRUE) or should
- // immediately return to the firmware in order not to destroy the multitasking
- // mechanism of the firmware (return FALSE).
- BOOL32 (*IsRunAllowed) (void);
- // Returns system time in seconds, milliseconds or microseconds depending on the
- // parameter unit.
- UINT32 (*GetSystemTime) (enum TimerUnit unit);
- // Display pop-up message on the display of the ROBO TX Controller. If p_msg
- // is NULL, then all pop-up messages are removed from the display and its cache,
- // and the main frame is displayed.
- void (*DisplayMsg) (struct ta_s * p_ta, char * p_msg);
- // Returns TRUE if display is currently being refreshed. A program should in such a
- // case wait until the display finishes its refreshing before sending new output to it.
- BOOL32 (*IsDisplayBeingRefreshed) (struct ta_s * p_ta);
-} TA_HOOK_TABLE;
-
-
-
-// ============================================================================
-// Transfer Area (TA) of ROBO TX Controller (one element of TA array)
-// ============================================================================
-#define RESERVED_1_SIZE 4
-#define RESERVED_2_SIZE 28
-#define RESERVED_3_SIZE \
- (512 - ( \
- sizeof(TA_INFO) + \
- sizeof(TA_STATE) + \
- sizeof(TA_CONFIG) + \
- sizeof(TA_INPUT) + \
- sizeof(TA_OUTPUT) + \
- sizeof(TA_DISPLAY) + \
- RESERVED_1_SIZE + \
- sizeof(TA_CHANGE) + \
- sizeof(TA_TIMER) + \
- RESERVED_2_SIZE + \
- sizeof(TA_HOOK_TABLE) \
- ))
-
-
-typedef struct ta_s
-{
- TA_INFO info; // info structure
- TA_STATE state; // state structure
- TA_CONFIG config; // config structure
- TA_INPUT input; // input structure
- TA_OUTPUT output; // output structure
- TA_DISPLAY display; // display structure
-
- char reserved_1[RESERVED_1_SIZE];
-
- TA_CHANGE change; // change structure
- TA_TIMER timer; // 16-bit timers
-
- char reserved_2[RESERVED_2_SIZE];
-
- TA_HOOK_TABLE hook_table; // hook table with functions pointers
-
- char reserved_3[RESERVED_3_SIZE];
-} TA;
-
-
-#endif // __ROBO_TX_FW_H__
--- a/ROBO_TX_PRG.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-//=============================================================================
-// Description | Header file with definition of the software interface
-// | to the ROBO TX Controller program.
-// | Can be used for building C-programs which can run
-// | under control of the ROBO TX Controller firmware in
-// | download (local) mode.
-// |
-// Copyright | � 2009 MSC Vertriebs GmbH, Germany.
-// |
-// | This software is distributed in the hope that it will be useful,
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-//=============================================================================
-
-#ifndef __ROBO_TX_PRG_H__
-#define __ROBO_TX_PRG_H__
-
-#define CALL_CYCLE_MS 1 // firmware calls program each millisecond
-
-#define MIN(a, b) ((a <= b) ? a : b)
-#define MAX(a, b) ((a >= b) ? a : b)
-
-#define TA_VERSION 0x08010101 // Transfer Area version. Is used by firmware to check if format of the
- // Transfer Area used in program is the same as the one used in firmware.
-
-#define PRG_MEM_START 0x30700000 // start address of the program memory
-#define PRG_MEM_SIZE 0x000D0000 // size of the program memory
-
-#define PRG_MAGIC 0x336699AA
-
-#if defined(__cplusplus)
- #define NULL 0L
-#else
- #define NULL ((void *)0)
-#endif
-
-#undef TRUE
-#define TRUE (1 == 1)
-
-#undef FALSE
-#define FALSE (!TRUE)
-
-#ifndef __cplusplus
-typedef enum
-{
- false = FALSE,
- true = TRUE
-} bool;
-#endif // __cplusplus
-
-typedef signed char CHAR8;
-typedef unsigned char UCHAR8;
-
-typedef unsigned char BOOL8; // boolean variable (should be TRUE or FALSE)
-typedef unsigned short BOOL16; // boolean variable (should be TRUE or FALSE)
-typedef unsigned int BOOL32; // boolean variable (should be TRUE or FALSE)
-
-typedef signed char INT8;
-typedef signed short INT16;
-typedef signed int INT32;
-
-typedef unsigned char UINT8;
-typedef unsigned short UINT16;
-typedef unsigned int UINT32;
-
-#include "ROBO_TX_FW.h"
-
-// At the beginning of the program code should be this structure
-struct prg_code_intro_s
-{
- unsigned long magic; // PRG_MAGIC
- FT_VER ta_version; // TA_VERSION
- unsigned long entry; // entry point of the program, usually address of
- // the program dispatcher (PrgDisp) function
-};
-
-
-// This function is called only once by the program dispatcher (PrgDisp) at the very first call
-// of the program dispatcher by the firmware
-void PrgInit
-(
- TA * p_ta, // pointer to the array of transfer area parts
- int n_ta // number of transfer area parts in array (equal to TA_COUNT)
-);
-
-
-// This function is called periodically by the program dispatcher (PrgDisp) with the period
-// of CALL_CYCLE_MS
-int PrgTic
-(
- TA * p_ta, // pointer to the array of transfer area parts
- int n_ta // number of transfer area parts in array (equal to TA_COUNT)
-);
-
-
-#endif // __ROBO_TX_PRG_H__
--- a/apps.cpp Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-#include "mbed.h"
-#include "EthernetNetIf.h"
-#include "HTTPServer.h"
-
-extern EthernetNetIf eth;
-HTTPServer svr;
-LocalFileSystem fs("webfs");
-DigitalOut *leds[4];
-extern Serial viaUsb;
-
-void walking_lights() {
- leds[0] = new DigitalOut(LED1);
- leds[1] = new DigitalOut(LED2);
- leds[2] = new DigitalOut(LED3);
- leds[3] = new DigitalOut(LED4);
- int i = 0;
- while (1) {
- *leds[i] = 1;
- wait(0.2);
- *leds[i] = 0;
- i++;
- i %= 4;
- viaUsb.putc('*');
- }
-}
-
-int http_server() {
- FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
- //FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
-
- svr.addHandler<FSHandler>("/files");
-// svr.addHandler<SimpleHandler>("/"); //Default handler
- svr.bind(80);
-
- viaUsb.printf("Listening for http requests...\n");
-/*
- Timer tm;
- tm.start();
- //Listen indefinitely
- while (true) {
- Net::poll();
- if (tm.read()>.5) {
- tm.start();
- }
- }
- */
-}
--- a/data.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-#ifndef DATA_H
-#define DATA_H
-
-
-#include <stdint.h>
-typedef uint8_t UINT8;
-typedef uint16_t UINT16;
-typedef uint8_t BOOL8;
-typedef int16_t INT16;
-typedef int32_t INT32;
-typedef uint16_t BOOL16;
-typedef uint8_t UCHAR8;
-typedef uint32_t UINT32;
-typedef uint32_t BOOL32;
-
-#include "ROBO_TX_FW.h" //"../PC_programming_RoboTXC_V1-2_11_Dec_2009/PC_Programming_RoboTXC/Demo_Static_Lib_C/Inc/"
-
-typedef struct
-{ UINT16 start;
- union //the message format is HL, the native format is LH, receiver routine swaps HL to LH, send routine writes as HL
- { UINT16 bytes;
- struct
- { UINT8 bytesH, bytesL;
- }/*anonymous*/; //as_bytes;
- };//winavr allows anonymous structs and unions
- UINT32 snd, rec;
- UINT16 trans, session;
- UINT32 cmd, structs, ta_id;//ta_id is normally not considered part of the header but part of the payload, it is repeated for each struct
-} header;
-
-
-typedef struct
-{ UINT16 chksum;
- UCHAR8 etx;
-} trailer;
-
-typedef struct
-{ header hdr;
- union
- { struct { TA_OUTPUT output; trailer trl;} cmd002;//set outputs
- struct { TA_CONFIG config; trailer trl;} cmd005;//initialize
- struct { trailer trl;} cmd006;//extension request
- struct { DISPLAY_MSG disp; trailer trl;} cmd008;//display message
- struct { char name[20]; trailer trl;} cmd009;//change name, 20 = DEV_NAME_LEN+1+3padding
- struct { TA_INPUT input; trailer trl;} cmd102;//reply to cmd002
- struct { trailer trl;} cmd105;//reply to cmd005
- struct { TA_INFO info; trailer trl;} cmd106;//reply to cmd006
- struct { trailer trl;} cmd108;//reply to cmd008
- struct { trailer trl;} cmd109;//reply to cmd009
- struct { trailer trl;} empty; //empty reply (cmd108,109)
- } body;
-} message;
-
-#define SLAVES 8
-
-extern struct _conf config[SLAVES];
-extern message msg;
-extern unsigned char thisindex;
-void store_index();
-#define BYTES(m) ((m->hdr.bytesH<<8)|m->hdr.bytesL)
-
-#endif
--- a/debug.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -#ifndef DEBUG_H -#define DEBUG_H -#define DBG(x) viaUsb.printf(x); -extern Serial viaUsb; -#endif \ No newline at end of file
--- a/ftserver.cpp Fri Dec 31 14:01:14 2010 +0000
+++ b/ftserver.cpp Wed May 04 15:42:13 2011 +0000
@@ -3,7 +3,6 @@
#include "HTTPServer.h"
#include "ft.h"
#include "ftserver.h"
-#include "debug.h"
#define MBED
#include "ftlib.h"
@@ -11,12 +10,12 @@
ftServer::ftServer(IpAddr host, unsigned short port) {
err = listeningSock.bind(Host(host, port));
if (err) {
- DBG("Binding failed!\n");
+ printf("Binding failed!\n");
errorMsg();
return;
}
- DBG("Bound to host\n");
- viaUsb.printf("listening on port %d\n", port);
+ printf("Bound to host\n");
+ printf("listening on port %d\n", port);
listeningSock.setOnEvent(this, &ftServer::onTCPEvent);
index = 0;
isMsg = false;
@@ -26,36 +25,36 @@
void ftServer::errorMsg() {
switch (err) {
case __TCPSOCKET_MIN:
- DBG("Err: MIN");
+ printf("Err: MIN");
break;
case TCPSOCKET_SETUP:
- DBG("Err:TCPSocket not properly configured");
+ printf("Err:TCPSocket not properly configured");
break;
case TCPSOCKET_TIMEOUT:
- DBG("Err:Connection timed out");
+ printf("Err:Connection timed out");
break;
case TCPSOCKET_IF:
- DBG("Err:Interface has problems, does not exist or is not initialized");
+ printf("Err:Interface has problems, does not exist or is not initialized");
break;
case TCPSOCKET_MEM:
- DBG("Err:Not enough mem");
+ printf("Err:Not enough mem");
break;
case TCPSOCKET_INUSE:
- DBG("Err:Interface / Port is in use");
+ printf("Err:Interface / Port is in use");
break;
case TCPSOCKET_EMPTY:
- DBG("Err:Connections queue is empty");
+ printf("Err:Connections queue is empty");
break;
case TCPSOCKET_RST:
- DBG("Err:Connection was reset by remote host");
+ printf("Err:Connection was reset by remote host");
break;
case TCPSOCKET_OK:
- DBG("Err:Success");
+ printf("Err:Success");
break;
default:
- DBG("Err:Unknown");
+ printf("Err:Unknown");
}
- DBG("\r\n");
+ printf("\r\n");
}
void ftServer::onTCPEvent(TCPSocketEvent ev) {
@@ -63,18 +62,18 @@
TCPSocket *pConnectedSock;
switch (ev) {
case TCPSOCKET_ACCEPT:
- DBG("Accept event\r\n");
+ printf("Accept event\r\n");
err = listeningSock.accept(&client, &pConnectedSock);
if (err) {
- DBG("accept failed!\r\n");
+ printf("accept failed!\r\n");
errorMsg();
return; //Could not accept client
}
- DBG("Accepted\r\n");
+ printf("Accepted\r\n");
queue.push_back(new connection(this, client, pConnectedSock));
break;
default:
- DBG("listenSocket other event\r\n");
+ printf("listenSocket other event\r\n");
break;
}
}
@@ -93,11 +92,11 @@
bool ftServer::startServer() {
err = listeningSock.listen(); //Starts listening
if (err) {
- DBG("listen failed!\n");
+ printf("listen failed!\n");
errorMsg();
return false;
}
- DBG("listen OK\t");
+ printf("listen OK\t");
return true;
}
/*
@@ -121,16 +120,16 @@
}
while (!isMsg) {
if (pConnectedSock->recv(&c, 1) == 0) {
- DBG("NoData ");
+ printf("NoData ");
return false; //no data available
}
isMsg = c == 0x90;//start of message
if (isMsg) {//potentially we are at the start of a message
msg[0] = c; //0x90
- DBG(" SOM ");
+ printf(" SOM ");
index = 1;
if (text) {
- DBG(text);
+ printf(text);
delete[] text;
text = 0;
}
@@ -141,15 +140,15 @@
textlen = c;//potential length of the string
text = new char[textlen+1];
index = 0;
- DBG("STX ");
+ printf("STX ");
} else {
text[index++] = c;
- DBG("+");
+ printf("+");
}
if (index == textlen) { //assume the entire string was read
text[index] = '\0';
- DBG(text);
- DBG(" ETX ");
+ printf(text);
+ printf(" ETX ");
// if (s == "QUIT")
// return false;//in-band signalling, not used
delete[] text;
@@ -159,12 +158,12 @@
}
index += pConnectedSock->recv(msg+index, sizeof(msg) - index);
if (index >= sizeof(msg)) {
- DBG(render());
+ printf(render());
isMsg = false; //start over on the presumption of text
- DBG(" EOM\r\n");
+ printf(" EOM\r\n");
return true; //message is ready
}
- DBG("-");
+ printf("-");
return false;
}
#else
@@ -173,9 +172,9 @@
while (pConnectedSock->recv(&c, 1) == 1) {
char txt[20];
sprintf(txt, "%02X ", c);
- DBG(txt);
+ printf(txt);
}
- DBG(";");
+ printf(";");
return false;
}
#endif
@@ -195,13 +194,13 @@
void connection::onConnectedTCPSocketEvent(TCPSocketEvent ev) {//called as part of NetPoll
switch (ev) {
case TCPSOCKET_CONNECTED:
- DBG("connectedSocket: Connected to host\n\r");//did not happen
+ printf("connectedSocket: Connected to host\n\r");//did not happen
return;
case TCPSOCKET_ACCEPT://should not happen
- DBG("connectedSocket: Client is connected, must call accept() to get a new Socket\n\r");
+ printf("connectedSocket: Client is connected, must call accept() to get a new Socket\n\r");
return;
case TCPSOCKET_READABLE: //this happens when data is received
- //DBG("connectedSocket: Data in buf\n\r");
+ //printf("connectedSocket: Data in buf\n\r");
if (server->readStream(pConnectedSock)) {
//writeStream("received the message");
//writeStream((SMESSAGE*)(msg+1));
@@ -209,25 +208,25 @@
}
return;
case TCPSOCKET_WRITEABLE://this happens
- //DBG("connectedSocket: Can write data to buf\n\r");
+ //printf("connectedSocket: Can write data to buf\n\r");
return;
case TCPSOCKET_CONTIMEOUT:
- DBG("connectedSocket: Connection timed out\n\r");
+ printf("connectedSocket: Connection timed out\n\r");
break;
case TCPSOCKET_CONRST:
- DBG("connectedSocket: Connection was reset by remote host\n\r");
+ printf("connectedSocket: Connection was reset by remote host\n\r");
break;
case TCPSOCKET_CONABRT:
- DBG("connectedSocket: Connection was aborted\n\r");
+ printf("connectedSocket: Connection was aborted\n\r");
break;
case TCPSOCKET_ERROR:
- DBG("connectedSocket: Unknown error\n\r");
+ printf("connectedSocket: Unknown error\n\r");
break;
case TCPSOCKET_DISCONNECTED://this happens
- DBG("connectedSocket: Disconnected\n\r");
+ printf("connectedSocket: Disconnected\n\r");
break;
default:
- DBG("connectedSocket: Unknown event\r\n");
+ printf("connectedSocket: Unknown event\r\n");
return;
}
//disconnected socket
--- a/ftserver.h Fri Dec 31 14:01:14 2010 +0000
+++ b/ftserver.h Wed May 04 15:42:13 2011 +0000
@@ -2,15 +2,7 @@
#define FTSERVER_H
#include <list>
using namespace std;
-/*
-class queue{
-TCPSocket *sock;
-static queue *head, *tail;
-queue *next;
-public:
-queue(TCPSocket *s): sock(s) {}
-};
-*/
+
void handleMessage(char[7]);
class connection;
--- a/libft.c Fri Dec 31 14:01:14 2010 +0000
+++ b/libft.c Wed May 04 15:42:13 2011 +0000
@@ -207,7 +207,7 @@
#define LIBFT_VERSION_MAJOR 1
#define LIBFT_VERSION_MINOR 0
#define LIBFT_VERSION_PATCH 0
-extern Serial viaUsb;
+Serial viaUsb(USBTX, USBRX);
#else
#include <stdio.h>
#include <string.h>
@@ -1812,7 +1812,6 @@
case FT_INTELLIGENT_IF:
case FT_INTELLIGENT_IF_SLAVE:
return 0;
- break;
#ifdef USE_USB
case FT_ROBO_IF_USB:
case FT_ROBO_IO_EXTENSION:
--- a/main.cpp Fri Dec 31 14:01:14 2010 +0000
+++ b/main.cpp Wed May 04 15:42:13 2011 +0000
@@ -6,7 +6,6 @@
#include "ft.h"
#include "ftlib.h"
#include "ftserver.h"
-#include "debug.h"
#include "msgSerial.h"
/****************************************************
@@ -53,17 +52,15 @@
#define SUBID 100
EthernetNetIf eth;
+HTTPServer svr;
ftServer *server;
myConfig config;
LocalFileSystem local("local");
-extern void http_server();
+LocalFileSystem fs("webfs");
DigitalOut Green(p30), Yellow(p29);
-//DigitalOut link(LED1), speed(LED2);
-extern DigitalOut *leds[4];
-Serial viaUsb(USBTX, USBRX);
msgSerial *serialport=0;
FT_TRANSFER_AREA *ta = 0;
@@ -87,6 +84,12 @@
NOTIFICATION_EVENTS ne = {callback, context, 0, 0, 0, messageCB};
unsigned short msgID = encode("set");
+void http_server() {
+ FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
+ svr.addHandler<FSHandler>("/files");
+ svr.bind(80);
+ printf("Listening for http requests...\n");
+}
unsigned short encode(char* s) { //convert 3 character command to 16bit value
unsigned short r = 0;
@@ -166,7 +169,7 @@
printf("libver = %08X\n", ver);
if (!config.read("/local/ft.ini"))
- DBG("reading of configfile failed!\n");
+ printf("reading of configfile failed!\n");
mode = config.getLookup("mode", modes, 3);
switch (mode) {
case 0://cable (requires ftlib too)
@@ -192,6 +195,7 @@
} else
printf("Error %08X: %s\n", err, GetFtLibErrorString(err,1));
}
+ printf("Opening Ft device failed\n");
} else {
printf("devicetype %d is not supported\n", type);
}
@@ -224,21 +228,21 @@
int main() {
init_ft_interface();
- viaUsb.printf("Setting up ethernet...\n");
+ printf("Setting up ethernet...\n");
EthernetErr ethErr = eth.setup();
if (ethErr) {
- viaUsb.printf("Error %d in ethernet setup.\n", ethErr);
+ printf("Error %d in ethernet setup.\n", ethErr);
return -1;
}
- viaUsb.printf("Setup of ethernet OK\n");
+ printf("Setup of ethernet OK\n");
- DBG("starting http server\n");
+ printf("starting http server\n");
http_server();
- DBG("creating ft socket server\n")
+ printf("creating ft socket server\n");
server = new ftServer(IpAddr(),config.getInt("port",5000));
- DBG("starting ft socket server\n")
+ printf("starting ft socket server\n");
if (server->startServer()) {
for (;;) {//main loop
Net::poll();
@@ -262,6 +266,6 @@
CloseFtDevice(h);
}
CloseFtLib();
- DBG("end of program");
+ printf("end of program");
return 0;
}
--- a/motor.cpp Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -#include "mbed.h" -#include "motor.h" - -motor m1(p22, p23, p21); \ No newline at end of file
--- a/motor.h Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#ifndef MOTOR_H
-#define MOTOR_H
-
-class motor
-{ DigitalOut& _en;
- PwmOut &_a, &_b;
-public:
- motor(const PinName a, const PinName b, const PinName en): _en(*new DigitalOut(en)), _a(*new PwmOut(a)), _b(*new PwmOut(b))
- { _en = 1; _a.period_ms(1);}
- void set(float speed) { if (speed<0) { _a = 0; _b = speed;} else { _a = speed; _b = 0;}}
- void enable(bool e) { _en = e;}
-};
-/*
-class motor2
-{ PwmOut& _en;
- DigitalOut &_a, &_b;
-public:
- motor2(PinName a, PinName b, PinName en): _en(en), _a(a), _b(b){ _a = 0; _b = 0; _en.period_ms(1);}
- void set(float speed) { if (speed<0) { _a = 0; _b = 1;} else { _a = 1; _b = 0;} _en = speed; }
- void enable(bool e) { if (e) {} else { _en = 0;}
-};
-*/
-#endif
\ No newline at end of file
--- a/rs485.c Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-//#define DEBUG //switches PB2 in interrupts and timeouts
-#if 0 //for reference only
-#define ALLOW_NESTING
-
-#include "data.h"
-#include "rs485.h"
-
-
-#define BAUD 921600
-#define DIRPORT PORTD
-#define DIRBIT PD4
-#define DIRDIR DDRD
-#define TRANSMIT asm("sbi %0, %1"::"I" (_SFR_IO_ADDR(DIRPORT)),"I" (DIRBIT));
-#define RECEIVE asm("cbi %0, %1"::"I" (_SFR_IO_ADDR(DIRPORT)),"I" (DIRBIT));
-
-
-uint8_t /*wpos = 0,*/ rpos = 0;
-volatile uint8_t rs485_timeout = 0;
-volatile uint8_t rs485_delay = 0;
-static char* wposp = (char*)&msg.hdr.snd;
-static char state = 0;
-
-void init_rs485()
-{
-/*Set baud rate */
-//Enable receiver and transmitter (also interrupts)
-// UCSR0B = _BV(RXEN0) | _BV(TXEN0) | _BV(RXCIE0) /*| _BV(UDRIE0)*/;
-/* Set frame format: 8data, 1stop bit */
-// UCSR0C = (3<<UCSZ00);
-//set tranceiver
-// RECEIVE;
-// DIRDIR |= _BV(DIRBIT); //set enable as output
-}
-
-void enable_rx_rs485()
-{
- UCSR0B |= _BV(RXEN0) | _BV(RXCIE0); //enable uart rx
- RECEIVE;
-}
-
-void send_rs485()
-{ rpos = 0;
-//set RS485 tranceiver in send mode
- TRANSMIT;
-//disable rx interrupt
- UCSR0B &= ~(_BV(RXCIE0) | _BV(RXEN0));
-//enable tx interrupt, will immediately generate int
- UCSR0B |= _BV(UDRIE0);
-//kick off transmission
-// UDR0 = ((char*)&msg)[rpos++];//not necessary, will start by itself
- rs485_timeout = sizeof(msg)/8; //just a precaution, transmit should not timeout, timeout is approx. 110% of expected time
-}
-
-ISR(USART_RX_vect)
-{
- SETPIN12;
-#ifdef ALLOW_NESTING
- MASK_TIMER_INT();
- MASK_EXTENSION_INT();
- MASK_DISTANCE_INT();
- MASK_IR_INT();
- //MASK_EEPROM_INT();
- sei();
-#endif
- register char *wp asm("r30") = wposp;
- register char data asm("r1");
- do
- { data = UDR0;
- rs485_timeout = 2;//set a timeout of 100-200us equiv. to 10-20 bytes
- switch (state)
- { case 0: //idle
- if (data == 0x02)
- state = 1;
- else if (data == 0xA0)//this is really a hack, it avoids timeouts in case of a bad start
- state = 5;
- break;
- case 1: //stx
- if (data == 0x55)
- state = 2;
- else
- state = 0;
- break;
- case 2://length H, high byte comes first
- msg.hdr.bytesL = data;
- state = 3;
- break;
- case 3://length L, low byte
- msg.hdr.bytesH = data;
- if (msg.hdr.bytes > sizeof(msg)-7)
- state = 0; //message structure cannot accomodate message this size
- else
- state = 4;
- break;
- case 4://store
- *wp++ = data;
- if (wp >= ((char*)&msg.hdr.snd + sizeof(trailer)) + msg.hdr.bytes
- && wp <= (char*)&msg + sizeof(message) + 1
- )
- { //message complete
- wp = (char*)&msg.hdr.snd;
- rs485_timeout = 0;
- //tx_message = find_ad(msg.hdr.rec) > 0;
- tx_message = msg.hdr.rec - 3;
- if (tx_message >= 0)
- { UCSR0B &= ~(_BV(RXCIE0) | _BV(RXEN0)); //disable rec to avoid corruption by new messages
- }
- state = 0;
- }
- break;
- case 5://wrong start
- if (data == 0x15)//after a wrong start A0 i.o. 02, the 55 gets read as 15
- { msg.hdr.bytesL = 0;
- state = 3;
- }
- else
- state = 0;
- default:
- break;
- }
- } while (UCSR0A & _BV(RXC0)); //see if another char is available, now it is fast enough so this is normally not the case
- wposp = wp;
-#ifdef ALLOW_NESTING
- cli();
- UNMASK_TIMER_INT();
- UNMASK_EXTENSION_INT();
- UNMASK_DISTANCE_INT();
- UNMASK_IR_INT();
- //UNMASK_EEPROM_INT();
-#endif
- CLRPIN12;
-}
-
-
-ISR(USART_UDRE_vect)
-{ SETPIN12;
- if (rpos > BYTES()+7)
- { //last byte was sent
- RECEIVE;
- UCSR0B &= ~_BV(UDRIE0); //disable tx int
- UCSR0B |= _BV(RXCIE0) | _BV(RXEN0); //re-enable rx int
- rs485_timeout = 0;
- }
- else//send 1 byte too many in order to detect that the etx char was sent
- UDR0 = ((char*)&msg)[rpos++];
- CLRPIN12;
-}
-
-void timeout_rs485()
-{ SETPIN12;
- //reset receiver
- wposp = (char*)&msg.hdr.snd;
- state = 0;
- //reset transmitter
- rpos = 0;
- RECEIVE;
- UCSR0B &= ~_BV(UDRIE0); //disable tx int
- UCSR0B |= _BV(RXCIE0) | _BV(RXEN0); //re-enable rx int
- CLRPIN12;
-}
-#endif
--- a/rs485.cpp Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,187 +0,0 @@
-#include "mbed.h"
-#include "data.h"
-
-#define TXMODE true /* level of eg. MAX485 input to switch to transmit mode */
-#define RXMODE (!TXMODE)
-
-class rs485: public Serial, DigitalOut { //since communication is half duplex we use only one buffer for both reading and writing
- char *buffer;
- int index, length; //index is the buffer pointer, length is the length of the buffer
- //bool receiving;
- bool _done;
- virtual void rx() { //ISR that stashes bytes until the buffer is full and then disables itself
- //if (!receiving)return;
- if (index<length)
- buffer[index++] = getc();
- else {
- //receiving = false;
- attach(0);
- _done = true;
- }
- }
- virtual void tx() { //ISR that sends out the entire buffer and then switches to receive mode
- if (index<length)
- putc(buffer[index++]);
- else {
- DigitalOut::write(RXMODE);
- attach(this,&rs485::rx, RxIrq);
- _done = true;
- }
- }
-public:
- enum mode_t { rec, trans};
- rs485(PinName out, PinName in, PinName dir): Serial(out, in), DigitalOut(dir) {
- //attach(this, rx, RxIrq);
- attach(this, &rs485::tx, TxIrq);
- DigitalOut::write(RXMODE);
- buffer = 0;
- length = 0;
- //receiving = false;
- }
- //void init(int br) {}
- void send(char *buf, int len) {
- DigitalOut::write(TXMODE);
- buffer = buf;
- length = len;
- putc(*buffer);
- index = 1;
- }
- void receive(char *buf, int len) {
- buffer = buf;
- length = len;
- //receiving = true;
- attach(this,&rs485::rx, RxIrq);
- }
- bool done() {
- bool tmp = _done;
- _done=false;
- return tmp;
- }
- void setmode(enum mode_t m) {
- if (m==rec)
- DigitalOut::write(RXMODE);
- else
- DigitalOut::write(TXMODE);
- }
-};
-
-
-//class specialized for use with the fischertechnik TXC
-class TXC_rs485: public rs485 {
- message *msg; //pointer to a TXC message buffer
- char *wp; //pointer where the receiver will write the data
- int rpos; //index where the transmitter will read the data
- virtual void rx(); //ISR
- virtual void tx(); //ISR
- char state; //receiver state
- int rs485_timeout; // a timeout period, intended to reset the receiver when interrupts stop before the end of a message
- int tx_message; //the destination of a received message, i.e. the slave address
-public:
- TXC_rs485(PinName out, PinName in, PinName dir): rs485(out, in, dir) {
- baud(921600);
- }
- void receive(message *m) {
- state = 0;
- msg = m;
- wp = (char*)&msg->hdr.snd;
- }
- void send(message *m) {
-#if 1
- rs485::send((char*)m, BYTES(msg)+7);//use base class for transmission
-#else
- rpos = 0;
- msg = m;
-//set RS485 tranceiver in send mode
- setmode(trans);
-//disable rx interrupt
- attach(0);
-//enable tx interrupt, will immediately generate int
- attach(this, &TXC_rs485::tx, TxIrq);
-//kick off transmission
-// putc((char*)msg)[rpos++];//not necessary, will start by itself
- rs485_timeout = sizeof(message)/8; //just a precaution, transmit should not timeout, timeout is approx. 110% of expected time
-#endif
- }
-
- int Slave(bool clear=false) {//return the destination of the received packet, functions also as reception complete flag, is <0 when not yet available
- int tmp = tx_message;
- if (clear)
- tx_message = -3;
- return tmp;
- }
- void timeout();
-};
-
-void TXC_rs485::rx() {
-// SETPIN12;
- char data;
- do {
- data = getc();
- rs485_timeout = 2;//set a timeout of 100-200us equiv. to 10-20 bytes
- switch (state) {
- case 0: //idle
- if (data == 0x02)//stx
- state = 1;
- break;
- case 1: //stx
- if (data == 0x55)
- state = 2;
- else
- state = 0;
- break;
- case 2://length H, high byte comes first
- msg->hdr.bytesL = data;
- //length = (unsigned)data<<8;
- state = 3;
- break;
- case 3://length L, low byte
- msg->hdr.bytesH = data;
- //length += data;
- if (msg->hdr.bytes > sizeof(msg)-7)
- state = 0; //message structure cannot accomodate message this size
- else
- state = 4;
- break;
- case 4://store
- *wp++ = data;
- if (wp >= ((char*)&msg->hdr.snd + sizeof(trailer)) + msg->hdr.bytes
- && wp <= (char*)msg + sizeof(message) + 1
- ) { //message complete
- wp = (char*)&msg->hdr.snd;//ready for next message to receive
- rs485_timeout = 0;
- tx_message = msg->hdr.rec - 3;//slave address tx_message==0 means Ext.1 etc
- if (tx_message >= 0) {
- attach(0); //disable rec to avoid corruption by new messages
- }
- state = 0;
- }
- break;
- default:
- break;
- }
- } while (readable()); //see if another char is available, now it is fast enough so this is normally not the case
-// CLRPIN12;
-}
-
-void TXC_rs485::tx() {// SETPIN12;
- if (rpos > BYTES(msg)+7) { //last byte was sent
- attach(0, TxIrq); //disable tx int
- attach(this,&TXC_rs485::rx, RxIrq); //re-enable rx int
- rs485_timeout = 0;
- } else//send 1 byte too many in order to detect that the etx char was sent
- putc(((char*)msg)[rpos++]);
-// CLRPIN12;
-}
-
-void TXC_rs485::timeout() {
- //SETPIN12;
- //reset receiver
- wp = (char*)&msg->hdr.snd;
- state = 0;
- //reset transmitter
- rpos = 0;
- setmode(rec);
- attach(0, TxIrq); //disable tx int
- attach(this,&TXC_rs485::rx, RxIrq); //re-enable rx int
- //CLRPIN12;
-}
--- a/rs485.h Fri Dec 31 14:01:14 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -#ifndef RS485_H -#define RS485_H - -#define RX_TO_TX_DELAY 2 //additional ??? us - -void init_rs485(); -void send_rs485(); -void timeout_rs485(); -void enable_rx_rs485(); - -extern message msg; -extern volatile int8_t tx_message; -extern volatile uint8_t rs485_timeout; -extern volatile uint8_t rs485_delay; - -#endif - -
--- a/tx-bridge.c Fri Dec 31 14:01:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,532 +0,0 @@
-//$Id$
-/*****************************************************************************************
-following interrupts are used:
-module source freq prio blocking latency duration
-IR: timer1 capture low low N <200us med when IR active f ~ 1kHz
- timer1 overflow low low Y <10ms short f = 28Hz
-ext int0 (ack) med low N <50us long f ~ 2kHz
- spi med low Y <5us short f ~ 2kHz
-485 RX high high Y <5us medium f = 92kHz burst
- TX high high Y <10us short f = 92kHz burst
-servo timer0 comp low high Y <1us very short f = 200Hz @4 servos
-timer timer2 comp med low N <20us long f = 10kHz
-distance ADC med low N <20us med f = 9kHz
-tx-bridge eeprom low low Y
-
-the timer 2 interrupt takes care of timeouts (not critical) and event scheduling (servo and extension).
-Because timer2 is interruptable these processes are effectively background.
-The IR interrupts could be made non-blocking but a race between capture and overflow will result.
-The share variable is 'overflow', possibly the capture int could be made non-blocking.
-The servo is very sensitive to jitter probably due to latency caused by RX/TX (jitter is now 16us).
-This can only be reduced by making RX/TX non-blocking (but this causes other problems) or a hardware
-solution with external latches reset by the timer output.
-
-*****************************************************************************************/
-
-#if 0 //for reference only
-
-/* Fuse settings:
- * SPIEN (default), allows ISP
- * EESAVE (optional), keeps eeprom settings
- * factory default CKDIV8 must be unprogrammed!
- * for SUK_CKSEL I used ext X-tal >8MHz 16K CK
- * this resulted in: Ext F9, High D7, Low FF
- */
-
-#define DEBUG //the debug statements are actually defined to drive a pin
-#define HW_VERSION 'A' //can be 'A', 'B' or 'C'
-#define HW_EXTENSION 'B'
-#define SW_MAJOR 1L
-#define SW_MINOR 6L
-#define SW_EXTENSION 0x00010000L
-#define TA_VERSION 0x08010101 /* copied from real TX data */
-#define REVISION "$Rev: 39 $"
-
-
-//#include <stdint.h>
-#include <string.h>
-#include "data.h"
-#include "rs485.h" //uses UART (PORTD0-1), PORTD4 as transmit enable
-#include "robo_ext.h" //uses PORTD5-7 as a0-a2, PORTD2 as ack, SPI (PORTB3-5)
-#include "timer.h" //uses timer2 as system timer 100us
-#include "servo.h" //uses timer0 as one shot timer, PORTC0-3 as servo outputs
-#include "ir.h" //uses timer1 as free running counter, ICP1 (PORTB0) as IR input
-#include "distance.h" //uses PORTC0-3 as analog inputs
-#include "command.h"
-#include "stepper.h"
-//#include "i2c.h" //uses TWI (PORTC4-5)
-
-char timeP[] PROGMEM = __TIME__;
-char dateP[] PROGMEM = __DATE__;
-char revP[] PROGMEM = "$Rev: 39 $";
-
-message msg = {{0x5502,{0},0,0,0,2,0,1,0},{{{{0,0,0,0},{0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0}},{0,3}}}};
-struct _to_ext to_ext[MAXEXT] = {{0x0D,0xFF,0xFFFFFFFF}, //the 0x0D is mandatory, the 0xFF are actually zero's because data is inverted
- {0x0D,0xFF,0xFFFFFFFF},
- {0x0D,0xFF,0xFFFFFFFF},
- {0x0D,0xFF,0xFFFFFFFF},
- {0x0D,0xFF,0xFFFFFFFF},
- {0x0D,0xFF,0xFFFFFFFF},
- {0x0D,0xFF,0xFFFFFFFF}
- };
-struct _from_ext from_ext[MAXEXT];
-uint8_t nrofext = 0;
-struct _conf config[SLAVES];
-
-//uint32_t slave_address[SLAVES];
-//uint32_t ee_slave_address[SLAVES] __attribute__((section(".eeprom"))) = {3,4,5,6,7,8,9,10};
-
-const TA_INFO my_interface_info[SLAVES] PROGMEM = {
- {"ROBO I/O Ext 1","00:00:00:00:00:00",0,0,0,0,{{HW_EXTENSION},{SW_EXTENSION},{TA_VERSION},"\0\0\0"}},
- {"ROBO I/O Ext 2","00:00:00:00:00:00",0,0,0,0,{{HW_EXTENSION},{SW_EXTENSION},{TA_VERSION},"\0\0\0"}},
- {"ROBO I/O Ext 3","00:00:00:00:00:00",0,0,0,0,{{HW_EXTENSION},{SW_EXTENSION},{TA_VERSION},"\0\0\0"}},
- {"ROBO I/O Ext 4","00:00:00:00:00:00",0,0,0,0,{{HW_EXTENSION},{SW_EXTENSION},{TA_VERSION},"\0\0\0"}},
- {"ROBO I/O Ext 5","00:00:00:00:00:00",0,0,0,0,{{HW_EXTENSION},{SW_EXTENSION},{TA_VERSION},"\0\0\0"}},
- {"ROBO I/O Ext 6","00:00:00:00:00:00",0,0,0,0,{{HW_EXTENSION},{SW_EXTENSION},{TA_VERSION},"\0\0\0"}},
- {"ROBO I/O Ext 7","00:00:00:00:00:00",0,0,0,0,{{HW_EXTENSION},{SW_EXTENSION},{TA_VERSION},"\0\0\0"}},
- {"ROBO-TX bridge","00:00:00:00:00:00",0,0,0,0,{{HW_VERSION},{SW_MINOR<<24 | SW_MAJOR<<16},{TA_VERSION},{0x01,0x01,0x01,0x04}}}
-};
-
-char ee_names[SLAVES][17] __attribute__((section(".eeprom"))) = { "ROBO I/O Ext 1",
- "ROBO I/O Ext 2",
- "ROBO I/O Ext 3",
- "ROBO I/O Ext 4",
- "ROBO I/O Ext 5",
- "ROBO I/O Ext 6",
- "ROBO I/O Ext 7",
- "ROBO-TX bridge"
- };
-unsigned char ee_thisindex __attribute__((section(".eeprom"))) = 7;//7 corresponds to extension 8, any higher number will not be recognised (slave not present)
-unsigned char thisindex = 7; //ram copy of ee_thisindex
-volatile int8_t tx_message=-3;
-UINT16 my_session_id[SLAVES]; //rolling session IDs for each slave
-static char name[20]; //eeprom buffer
-static char *eeptr = name;
-static unsigned eesiz;
-char eeprom_busy = 0;
-
-UINT16 checksum(UINT16 n)
-{ UINT16 sum = 0;
- n += 2; //include length in checksum
- char *p = (char*)&msg.hdr.bytes;
- do
- { sum -= *p++;
- } while (--n);
- return (sum<<8)|(sum>>8);
-}
-
-void copy_from_ext(short int idx)
-{ short int i;
- if (idx == thisindex)
- {
-#ifdef USE_IR
- get_IR();
-#endif
-#ifdef USE_DISTANCE
- for (i = 4; i < 8; i++)
- if (config[idx].dist & (1<<i))
- msg.body.cmd102.input.uni[i] = get_distance(i-4);
-#endif
-#ifdef USE_STEPPER
-//copy position reached info and counter values
- for (i = 0; i < 4; i++)
- { msg.body.cmd102.input.counter[i] = steppers[i].pos;
- msg.body.cmd102.input.motor_pos_reached[i] = steppers[i].pos == steppers[i].dest;
- }
-#endif
- }
- else //it's an io extension
- {
-#ifdef USE_ROBO_EXT
- for (i = 0; i < 8; i++)
- msg.body.cmd102.input.uni[i] = from_ext[idx].inputs & (1<<i) ? 0 : 1;
- if (!(config[idx].uni & 1))
- { int v = 950 - (from_ext[idx].ax + ((int)(from_ext[idx].high&0x03)<<8));
- if (v<0)
- v = 0;
- else
- v = (v<<2) + v + (v>>2);
- msg.body.cmd102.input.uni[0] = v;
- }
- if (!(config[idx].uni & 2))
- msg.body.cmd102.input.uni[1] = 1023 - (from_ext[idx].az + ((int)(from_ext[idx].high&0x0c)<<6));
- if (!(config[idx].uni & 4))
- { int v = 1023 - (from_ext[idx].av + ((int)(from_ext[idx].high&0x30)<<4));
- msg.body.cmd102.input.uni[2] = 3*v;
- }
-#endif
- }
- //fill the other data with zeros
- for (i = 0; i < N_CNT; i++)
- { msg.body.cmd102.input.cnt_in[i] = 0;
- msg.body.cmd102.input.counter[i] = 0;
- }
- msg.body.cmd102.input.display_button_left = 0;
- msg.body.cmd102.input.display_button_right = 0;
- for (i = 0; i < N_MOTOR; i++)
- { msg.body.cmd102.input.motor_pos_reached[i] = 0;
- }
-}
-
-/* the length as set in the block is the length of the header minus the 4 byte leader
- and minus the TA-id (4 bytes) + the size of the payload data + the size of the TA-id
-*/
-
-void send_102(short int idx)
-{ //msg.hdr.bytes = sizeof(header)+sizeof(TA_INPUT) - 4;
- msg.hdr.bytesH = (sizeof(header)+sizeof(TA_INPUT) - 4) >> 8;
- msg.hdr.bytesL = (sizeof(header)+sizeof(TA_INPUT) - 4) & 0xFF;
- msg.hdr.cmd = 102;
- msg.hdr.rec = msg.hdr.snd;
-// msg.hdr.snd = slave_address[idx];
- msg.hdr.snd = idx+3;
- msg.hdr.session = my_session_id[idx];
- copy_from_ext(idx);
- msg.body.cmd102.trl.chksum = checksum(sizeof(header)+sizeof(TA_INPUT) - 4);
- msg.body.cmd102.trl.etx = 3;
-// send_rs485();
- rs485_delay = RX_TO_TX_DELAY;
-}
-
-void send_105(short int idx)
-{ //msg.hdr.bytes = sizeof(header) - 4;
- msg.hdr.bytesH = (sizeof(header) - 4) >> 8;
- msg.hdr.bytesL = (sizeof(header) - 4) & 0xFF;
- msg.hdr.cmd = 105;
- msg.hdr.rec = msg.hdr.snd;
-// msg.hdr.snd = slave_address[idx];
- msg.hdr.snd = idx+3;
- msg.body.cmd105.trl.etx = 3;
-// send_rs485();
- if (msg.hdr.session == 0) //first config req
- { msg.hdr.session = ++my_session_id[idx];//reply with the next SID
- msg.body.cmd105.trl.chksum = checksum(sizeof(header) - 4);
- rs485_delay = 110;
- }
- else //second config req
- { msg.hdr.session = my_session_id[idx];//reply with the same SID
- msg.body.cmd105.trl.chksum = checksum(sizeof(header) - 4);
- rs485_delay = 55;
- }
-}
-
-void send_106(short int idx)
-{ //msg.hdr.bytes = sizeof(header)+sizeof(TA_INFO) - 4;
- msg.hdr.bytesH = (sizeof(header)+sizeof(TA_INFO) - 4) >> 8;
- msg.hdr.bytesL = (sizeof(header)+sizeof(TA_INFO) - 4) & 0xFF;
- msg.hdr.cmd = 106;
- msg.hdr.rec = msg.hdr.snd;
-// msg.hdr.snd = slave_address[idx];
- msg.hdr.snd = idx+3;
- my_session_id[idx]++; //bump the session-id
- my_session_id[idx] |= 1; //and make sure it is odd
- msg.hdr.session = my_session_id[idx];
- if (idx==thisindex)//if the bridge is addressed
- idx = 7; //always use the name of the bridge
- memcpy_P(&msg.body.cmd106.info, (PGM_P)&my_interface_info[idx], sizeof(TA_INFO));
- if (!eeprom_busy)
- eeprom_read_block(&msg.body.cmd106.info, &ee_names[idx][0], DEV_NAME_LEN+1); //overwrite the name
- //else tough luck, use the original name
- msg.body.cmd106.trl.chksum = checksum(sizeof(header)+sizeof(TA_INFO) - 4);
- msg.body.cmd106.trl.etx = 3;
-// send_rs485();
- rs485_delay = RX_TO_TX_DELAY;
-}
-
-void send_empty_reply(short int idx)
-{ msg.hdr.bytesH = (sizeof(header) - 4) >> 8;
- msg.hdr.bytesL = (sizeof(header) - 4) & 0xFF;
- msg.hdr.cmd += 100;
- msg.hdr.rec = msg.hdr.snd;
- msg.hdr.snd = idx+3;
- msg.hdr.session = my_session_id[idx];
- msg.body.empty.trl.chksum = checksum(sizeof(header) - 4);
- msg.body.empty.trl.etx = 3;
-// send_rs485();
- rs485_delay = RX_TO_TX_DELAY;
-}
-
-void store_config(short int idx)
-{ short int i;
- config[idx].motor = 0;
- config[idx].uni = 0;
- config[idx].dist = 0;
- for (i = 0; i < 4; i++)
- if (msg.body.cmd005.config.motor[i])
- config[idx].motor |= 1<<i;
- for (i = 0; i < 8; i++)
- { if (msg.body.cmd005.config.uni[i].digital)
- config[idx].uni |= 1<<i;
- if (msg.body.cmd005.config.uni[i].mode == 3)
- config[idx].dist |= 1<<i;
- }
-#ifdef USE_SERVO
- if (idx == thisindex)
- enable_servos(~config[idx].dist>>4);
-#endif
-}
-
-/*
-short int find_ad(uint32_t ad)
-{ short int i;
- for (i = 0; i < SLAVES; i++)
- if (slave_address[i] == ad)
- return i;
- return -1;
-}
-*/
-
-#if 0
-void copy_to_ext(short int idx)
-{ //copy motor data from tx msg to io ext
- short int i;
- uint32_t pwm;
- uint32_t ext_pwm = 0;
- char m = 0;
- if (idx == 7)
- { set_servos();
- return;
- }
- for (i = 0; i < 4; i++)
- { if (config[idx].motor & (1<<i))
- { //treat as motor, this must be fixed!!!
- //in fact it does not need a fix because it works fine
- pwm = msg.body.cmd002.output.duty[i<<1];
- pwm /= 57; //reduce from 9 bits to 3 bits
- if (pwm)
- { m |= 1<<(2*i);
- pwm--;
- }
- ext_pwm |= pwm<<(6*i);
-
- pwm = msg.body.cmd002.output.duty[(i<<1)+1];
- pwm /= 57; //reduce from 9 bits to 3 bits
- if (pwm)
- { m |= 1<<(2*i+1);
- pwm--;
- }
- ext_pwm |= pwm<<(6*i+3);
- }
- else
- { //treat as 2 outputs
- pwm = msg.body.cmd002.output.duty[i<<1];
- pwm /= 57; //reduce from 9 bits to 3 bits
- if (pwm)
- { m |= 1<<(2*i);
- pwm--;
- }
- ext_pwm |= pwm<<(6*i);
-
- pwm = msg.body.cmd002.output.duty[(i<<1)+1];
- pwm /= 57; //reduce from 9 bits to 3 bits
- if (pwm)
- { m |= 1<<(2*i+1);
- pwm--;
- }
- ext_pwm |= pwm<<(6*i+3);
- }
- }
- to_ext[idx].pwm = ~ext_pwm & 0x00FFFFFF;
- to_ext[idx].motors = ~m;
-}
-#else
-void copy_to_ext(short int idx)
-{ //copy motor data from tx msg to io ext
- short int i;
- uint32_t pwm;
- uint32_t ext_pwm = 0;
- char m = 0;
- if (idx == thisindex)
- {
-#ifdef USE_SERVO
- set_servos();
-#endif
-#ifdef USE_STEPPER
-//copy position info and speed info
- for (i = 0; i < 4; i++)
- { steppers[i].dest = msg.body.cmd002.output.distance[i];
- steppers[i].speed = msg.body.cmd002.output.duty[2*i] - msg.body.cmd002.output.duty[2*i+1];
- if (msg.body.cmd002.output.cnt_reset[i])
- steppers[i].pos = 0;
- }
-#endif
- return;
- }
-#ifdef USE_ROBO_EXT
- for (i = 0; i < 8; i++)
- { pwm = msg.body.cmd002.output.duty[i];
- pwm /= 57; //reduce from 9 bits to 3 bits, 0-511 is mapped to 0-8, 0 means off and 1-8 are pwm values 0-7
- if (pwm)
- { m |= 1<<i;
- pwm--;
- }
- ext_pwm |= pwm<<(3*i);
- }
- to_ext[idx].pwm = ~ext_pwm & 0x00FFFFFF;
- to_ext[idx].motors = ~m;
-#endif
-}
-#endif
-
-#ifndef COMMAND_H
-ISR(EE_READY_vect)//don't make this non_blocking, the eeprom interrupt flag is still pending!
-{ EEDR = *eeptr;
- EEAR++;//address must be set BEFORE starting write, therefore we start at address-1
- EECR = _BV(EEMPE) | _BV(EERIE);
- EECR |= _BV(EEPE);
- //if timing is really critical, interrupts could be re-enabled here
- if (*eeptr)//this actually wrong because eeprom_busy is cleared while the last write is still in progress
- { eeptr++;
- }
- else
- { EECR = 0; //disable interrupt
- eeprom_busy = 0;
- }
-}
-#else
-ISR(EE_READY_vect)//don't make this non_blocking, the eeprom interrupt flag is still pending!
-{ if (eesiz)
- { EEDR = *eeptr;
- EEAR++;//address must be set BEFORE starting write, therefore we start at address-1
- EECR = _BV(EEMPE) | _BV(EERIE);
- EECR |= _BV(EEPE);
- //if timing is really critical, interrupts could be re-enabled here
- eesiz--;
- eeptr++;
- }
- else
- { EECR = 0; //disable interrupt
- eeprom_busy = 0;
- }
-}
-#endif
-
-#ifndef COMMAND_H
-void eeprom_write_string_noblock(char s[], char *eadr)
-{ eeprom_busy = 1;
- eeptr = s;
- EEAR = (unsigned)eadr-1;
- EECR |= _BV(EERIE);
-}
-#else
-void eeprom_write_string_noblock(char s[], char *eadr)
-{ eeprom_write_block_nonblocking(s, eadr, strlen(s)+1);
-}
-#endif
-
-void eeprom_write_block_nonblocking(char *src, char *dst, int size)
-{ if (eeprom_busy || size == 0)
- return;
- eeprom_busy = 1;
- eeptr = src;
- eesiz = size;
- EEAR = (unsigned)dst - 1;
- EECR |= _BV(EERIE);
-}
-
-void store_index()
-{ if (eeprom_busy)
- return;
- eeprom_write_byte(&ee_thisindex, thisindex);
-}
-
-void init()
-{ DDRB = _BV(PB1) | _BV(PB2); //debug on pins 15 and 16, for historical reasons the macros to set/clear these pins refer to pins 11 and 12
- PORTD = _BV(PD0); //enable the internal pullup on the RX input, pullup not possible on int0 => external pullup
- //recommended by atmel to activate pullup for unused pins
- //unused pins are: pc4-6 (sda,scl,reset), pd3 (int1)
- //pb1-2 (debug) are not really unused because they are outputs
- PORTC = _BV(PC4) | _BV(PC5) | _BV(PC6);
- PORTD |= _BV(PD3);
-}
-
-int main()
-{ init();
- init_rs485();
-#ifdef USE_ROBO_EXT
- init_extension();
-#endif
-#ifdef USE_IR
- init_IR();
-#endif
-#ifdef USE_SERVO
- init_servos();
-#endif
- init_timer();
-#ifdef USE_DISTANCE
- init_distance();
-#endif
-#ifdef USE_STEPPER
- init_stepper();
-#endif
-// eeprom_read_block(slave_address, ee_slave_address, sizeof(slave_address));
- thisindex = eeprom_read_byte(&ee_thisindex);
- sei(); //enable interrupts
- for(;;)
- { if (tx_message>=0)//is there a message?, if there is then rx and tx are disabled
- { int idx = tx_message;//find_ad(msg.hdr.rec);
- if ((/* idx >= 0 && */ idx < nrofext) || idx==thisindex) //is the message for us?
- { switch (msg.hdr.cmd)
- { case 2: if (msg.body.cmd002.trl.chksum != checksum(msg.hdr.bytes))
- { enable_rx_rs485();
- break;
- }
- copy_to_ext(idx);
- send_102(idx); //data transfer
- break;
- case 5: if (msg.body.cmd005.trl.chksum != checksum(msg.hdr.bytes))
- { enable_rx_rs485();
- break;
- }
- store_config(idx);
- send_105(idx); //configuration
- break;
- case 6: if (msg.body.cmd006.trl.chksum != checksum(msg.hdr.bytes))
- { enable_rx_rs485();
- break;
- }
- send_106(idx); //discovery
- break;
- case 8: if (msg.body.cmd008.trl.chksum != checksum(msg.hdr.bytes))
- { enable_rx_rs485();
- break;
- }
-#ifdef COMMAND_H
- handle_command(idx);
-#else
- //completely ignore this message
-#endif
- send_empty_reply(idx); //display message
- break;
- case 9: if (msg.body.cmd009.trl.chksum != checksum(msg.hdr.bytes))
- { enable_rx_rs485();
- break;
- }
-#if 0
- //the next function is too slow and should be replaced by a non-blocking function
- eeprom_write_block(msg.body.cmd009.name, &ee_names[idx][0], DEV_NAME_LEN+1);
-#else
- strcpy(name, msg.body.cmd009.name);
- eeprom_write_string_noblock(name, &ee_names[idx][0]);
-#endif
- send_empty_reply(idx); //name change
- break;
- default: //SETPIN12; //trigger the logic analyser so the command can be investigated
- enable_rx_rs485();
- break;
- }//switch
- //if we arrive here, one of the following is true: 1)the checksum was wrong (we are in receive mode);
- // 2)a reply was initiated (we are in send mode);
- // 3)an unknown cmd was received (we are in receive mode).
- }//if idx
- else
- {
- enable_rx_rs485(); //go back to receive mode when msg not for us
- }
- tx_message = -3; //clear message
- }//if message
- } //for
-}//main
-
-#endif
-