Free (GPLv2) TCP/IP stack developed by TASS Belgium
Dependents: lpc1768-picotcp-demo ZeroMQ_PicoTCP_Publisher_demo TCPSocket_HelloWorld_PicoTCP Pico_TCP_UDP_Test ... more
PicoTCP. Copyright (c) 2013 TASS Belgium NV.
Released under the GNU General Public License, version 2.
Different licensing models may exist, at the sole discretion of the Copyright holders.
Official homepage: http://www.picotcp.com
Bug tracker: https://github.com/tass-belgium/picotcp/issues
Development steps:
initial integration with mbed RTOSgeneric mbed Ethernet driverhigh performance NXP LPC1768 specific Ethernet driverMulti-threading support for mbed RTOSBerkeley sockets and integration with the New Socket APIFork of the apps running on top of the New Socket APIScheduling optimizations- Debugging/benchmarking/testing
Demo application (measuring TCP sender performance):
Import programlpc1768-picotcp-demo
A PicoTCP demo app testing the ethernet throughput on the lpc1768 mbed board.
Diff: EthernetInterface/EthernetInterface.h
- Revision:
- 125:96003ae6f1d8
- Parent:
- 5:445d2fc04784
- Child:
- 127:476fed453d4d
--- a/EthernetInterface/EthernetInterface.h Wed Nov 27 10:20:00 2013 +0000 +++ b/EthernetInterface/EthernetInterface.h Thu Nov 28 13:53:18 2013 +0000 @@ -43,6 +43,14 @@ #ifdef __cplusplus } #endif + +typedef enum +{ + INPUT_FILTER, + OUTPUT_FILTER +}filter_type; + +#define PORT_ANY (0) /** Interface using Ethernet to connect to an IP-based network * */ @@ -98,6 +106,38 @@ */ static int setDnsServer(const char *); + /** + * Creates a custom rule for dropping packets. + * If an incoming packet is destined for our stack and an input filter that matches + * input_src & filter_mask == filter_src & filter_mask and the ports are the same, port = 0 means any port and also filters icmp. + * the packet will be dropped. + * The same thing for an output filter. + * If we try to send a packet and + * output_dst & filter_mask == filter_dst & filter_mask and the ports are the same, + * the packet will be dropped. + * return > 0 if success, the number is the filter identifier and it will be used later to destroy the filter. + * return < 0 error. + */ + static int createIpFilter(char *ipAddress, char * netmask, int port, filter_type filter); + + /* + * This will create a custom filter, more complex than the previous one. + * A packet will be dropped if + * packet.port(s) == filter.port(s) + * packet.src & filter.src_mask == filter.src & filter.src_mask + * packet.dst & filter.dst_mask == filter.dst & filter.dst_mask + * if a value is passed null or 0.0.0.0 for address or 0 for port, will be considered as + * accept any. + * return > 0 if success, the number is the filter identifier and it will be used later to destroy the filter. + * return < 0 error. + */ + + static int createIpFilter(char *src, char * src_netmask, int src_port, char *dst, char * dst_netmask, int dst_port); + /* + * Destroy a custom filter. + */ + static int destroyIpFilter(int filter_id); + }; #include "TCPSocketConnection.h"