Commit Graph

236 Commits

Author SHA1 Message Date
Gregory Nutt
bd7c84b23e Remove CONFIG_NETDEV_MULTINIC. This increases code size by a little, but greatly reduces the complexity of the network code. 2017-08-08 14:24:12 -06:00
Gregory Nutt
572cf51fa4 Networking: Rethink IPv6 all-nodes packet routing. 2017-08-08 07:48:07 -06:00
Gregory Nutt
835ae2999d networking: Move a little more to the inet/ subdirectory. 2017-08-07 13:03:23 -06:00
Gregory Nutt
2ada7d5892 IPv6: Remove comparisons to the address with all ones set. IPv6 does not support broadcast addresses and certainly not in that form. Replace with multicast addresses beginning with 0xff02. 2017-08-07 11:50:50 -06:00
Gregory Nutt
799b2d5671 Update comments. 2017-07-17 07:14:12 -06:00
Gregory Nutt
d9a2a3c3f1 Networking: When upd_input() cannot process a packet, it returns ERROR so that network drivers may try calling ipv4_input() later. In this case, it must also set d_len to zero. Otherwise, all network drivers will assume tht there is also an outgoing packet. This results in a gratuitous ARP. 2017-07-17 06:50:39 -06:00
Gregory Nutt
aa2e9c15a5 IP forwarding: Major rearchitecting of the outgoing portion of the IP forwarding logic necessary into to properly received device-related forwarding events. 2017-07-07 20:19:26 -06:00
Gregory Nutt
803235ad4b IP forwaring: Rename some files to get closer to other naming conventions. 2017-07-07 18:45:58 -06:00
Gregory Nutt
7258f1cbfc IP forwarding: Move to separate directory. A few fixes from early testing; In TUN driver, do all polling on worker thread. Otherwise, the stack gets very deep. 2017-07-07 18:33:06 -06:00
Gregory Nutt
b5d7187df6 IP forwarding design simplication; might save some memory. Also fix some compile issues introduce with last commit in MULTINIC configration. 2017-07-06 16:19:10 -06:00
Gregory Nutt
b297066eb9 IP Forwarding: Add IPv4 packet forwarding logic. Initial commit is an untested clone of the IPv6 forwarding logic with a few minor logic changes for IPv4. 2017-07-05 15:12:29 -06:00
Gregory Nutt
edf16c5805 IP forwarding: In check it the Ethernet MAC address is in the ARP/Neighbor table, add an additional check to skip in the case of CONFIG_NET_MULTILINK and the devices is not an Ethernet device. 2017-07-05 12:40:26 -06:00
Gregory Nutt
31f832d8c5 IP forwarding: Flesh out TCP, UDP, and ICMPv6 packet forwarding logic. 2017-07-05 11:01:16 -06:00
Gregory Nutt
65c3fa6375 net/udp: Fix a copy-paste error that could effect networking when both IPv4 and IPv6 are enabled. 2017-07-05 07:27:17 -06:00
Gregory Nutt
5e617f8410 UDP networking: The TTL (time to live) was not being set in the IPv4 or IPv6 header unless the UDP socket was bound. 2017-07-04 12:05:21 -06:00
Gregory Nutt
c0c275c8fc IP forwarding. Adds a little more structure to handle passing packets received on one network device to another network device. Logic is still incomplete. 2017-07-04 10:19:52 -06:00
Gregory Nutt
0de294a586 Fix lots of occurrences of 'the the', 'the there', 'the these', 'the then', 'the they. 2017-05-11 13:35:56 -06:00
Gregory Nutt
2043e1a114 IOBs: Move from driver/iob to a better location in mm/iob 2017-05-09 07:35:30 -06:00
Gregory Nutt
d5207efb5a Be consistent... Use Name: consistent in function headers vs Function: 2017-04-21 16:33:14 -06:00
Gregory Nutt
bfb93338f6 Move net/iob to drivers/iob so that the I/O buffering feature can be available to other drivers when networking is disabled. 2017-04-20 16:08:49 -06:00
Gregory Nutt
bcc6b61fc1 Move include/nuttx/net/iob.h to include/drivers/iob.h; rename CONFIG_NET_IOB to CONFIG_DRIVERS_IOB 2017-04-20 14:53:30 -06:00
Jussi Kivilinna
cd3c9634c8 Add user-space networking stack API (usrsock)
User-space networking stack API allows user-space daemon to
provide TCP/IP stack implementation for NuttX network.

Main use for this is to allow use and seamless integration of
HW-provided TCP/IP stacks to NuttX.

For example, user-space daemon can translate /dev/usrsock
API requests to HW TCP/IP API requests while rest of the
user-space can access standard socket API, with socket
descriptors that can be used with NuttX system calls.
2017-03-31 08:58:14 -06:00
Pascal Speck
8f91c73304 - fixed wrong assert on udp dgram send 2017-03-17 15:13:03 +01:00
Gregory Nutt
7467329a98 Eliminate CONFIG_NO_NOINTS. Lots of files changed -> lots of testing needed. 2016-12-03 16:28:19 -06:00
Gregory Nutt
2d057c28c8 net: Disable priority inheritance on all semaphores used for signaling 2016-11-03 12:17:02 -06:00
Gregory Nutt
2a751068e6 Without lowsyslog() *llerr() is not useful. Eliminate and replace with *err(). 2016-06-20 12:44:38 -06:00
Gregory Nutt
43eb04bb8f Without lowsyslog() *llinfo() is not useful. Eliminate and replace with *info(). 2016-06-20 11:59:15 -06:00
Gregory Nutt
d40a473f72 Without lowsyslog() *llwarn() is not useful. Eliminate and replace with *warn(). 2016-06-20 09:37:08 -06:00
Gregory Nutt
7d0950bb22 net/: Change some nerr() ERRORS to nwarn() WARNINGS. Anomolous network events are not errors. 2016-06-12 07:09:37 -06:00
Gregory Nutt
f4fcdcdb4d net/: Change some *err() message to *info() messages if what was a *dbg() message does not indicate and error condition. 2016-06-11 17:37:21 -06:00
Gregory Nutt
a1469a3e95 Add CONFIG_DEBUG_ERROR. Change names of *dbg() * *err() 2016-06-11 15:50:49 -06:00
Gregory Nutt
e99301d7c2 Rename *lldbg to *llerr 2016-06-11 14:55:27 -06:00
Gregory Nutt
1cdc746726 Rename CONFIG_DEBUG to CONFIG_DEBUG_FEATURES 2016-06-11 14:14:08 -06:00
Gregory Nutt
fc3540cffe Replace all occurrences of vdbg with vinfo 2016-06-11 11:59:51 -06:00
Gregory Nutt
c98f00a93b Update comments; trivial addtion to a document. 2016-06-10 09:36:59 -06:00
Gregory Nutt
4f208600aa Replace confusing references to uIP with just 'the network' 2016-05-30 09:31:44 -06:00
Gregory Nutt
8db55f6493 Back out most of previous commit 2016-02-26 06:45:37 -06:00
Gregory Nutt
b0ea870bcc Remove some empty code section comments 2016-02-25 18:34:36 -06:00
Gregory Nutt
9ff645a298 drivers/ieee802154: Add a skeleton IEEE802154 driver 2016-02-25 15:11:30 -06:00
Gregory Nutt
0b441ff1f4 net/: Add basic IEEE 802.15-4 socket support 2016-02-25 14:01:22 -06:00
Gregory Nutt
bcbd8ee964 Networking: Cosmetic change 2016-02-24 19:02:51 -06:00
Gregory Nutt
0fb035f76b Standardize some naming in code section comments 2016-02-21 18:09:04 -06:00
Gregory Nutt
f348e68069 Update to use 64-bit timer when available 2016-01-21 11:54:26 -06:00
Gregory Nutt
6209c51206 net/: More clean-up of spacing/alignment issues 2015-10-08 15:10:04 -06:00
Gregory Nutt
0b12dbf95d Fix some spacing problems 2015-10-04 15:04:00 -06:00
Gregory Nutt
cb9e27c3b0 Standardize naming used for public data and function groupings 2015-10-02 16:30:35 -06:00
Gregory Nutt
4c4868c69f More cosmetic changes: Fix some errors in comments and some indentation problems 2015-08-11 19:23:51 -06:00
Gregory Nutt
850225223d Costmetic fix to a comment 2015-08-11 19:21:15 -06:00
Gregory Nutt
530d229361 net/udp: Add support for send() with connected UDP sockets 2015-08-11 19:17:55 -06:00
Max Neklyudov
7d04104485 Networking: Allow receipt of empty UDP packets. From Max Neklyudov 2015-08-11 08:34:16 -06:00
Gregory Nutt
342f5fe33d Fix references to the no-longer-existent misc/ directory in comments, README files, and documentation 2015-06-28 08:08:57 -06:00
Gregory Nutt
8f7752d956 Networking: Modify how callback structures are stored to avoid another potential use of a stal pointer. 2015-06-03 08:11:57 -06:00
Gregory Nutt
edbb5d0840 networking: Correct a typo introduced with recent networking changes 2015-06-02 15:04:02 -06:00
Gregory Nutt
04a661a97c TCP networking: Add support for network driver events 2015-05-30 09:12:27 -06:00
Gregory Nutt
ab50e9d04d Networking: Get rid of g_ipv4_allzeroaddr and g_ipv4_alloneaddr. It is more efficient and more intuitive to use INADDR_ANY and INADDR_BROADCAST 2015-05-29 15:16:11 -06:00
Gregory Nutt
34509a9ad5 UDP should use dev=NULL if the address in the lookup is INADDR_ANY 2015-05-29 14:56:44 -06:00
Gregory Nutt
0bdf2d5360 UDP Networking: Misc fixes to get the last changes working + cleanup 2015-05-29 14:32:56 -06:00
Gregory Nutt
2102892e7b Fix missing file and some compilation errors from the last UDP committ 2015-05-29 10:45:41 -06:00
Gregory Nutt
e672bcebfd UDP Networking: Add support for device event notification for UDP transfers. 2015-05-29 10:21:06 -06:00
Gregory Nutt
e81f279315 Networking: Modify event list handling: Now there are two event lists each device structure: (1) One is for ARP and ICMP data related evetns, the other is for device related events. Callback allocation/free routines no accept a device paramter as well as a list: If the device paramter is added, then the callback goes into both the connection-related liast AND the device event list. Thus each socket type can received both custom data-related events as well as common device related events. 2015-05-28 12:01:38 -06:00
Gregory Nutt
b94321cfb4 Extend device specific callbacks to ICMPv6 and ARP. Fix some IPv6 compilation errors that have crept in 2015-05-27 11:39:44 -06:00
Gregory Nutt
f20ac5ef93 Add inclusion of assert.h in networking files where needed to avoid compilation errors. From Max Neklyudov. 2015-05-13 07:24:22 -06:00
Gregory Nutt
db741dd695 Move some useful internal logic from recvfrom.c and udp_callback.c and put them in ip.h where they can be used more generally 2015-02-17 07:37:44 -06:00
Gregory Nutt
686dcbb79c Move some useful internal macros from udp_send.c and put them in ip.h where they can be used more generally 2015-02-17 07:08:11 -06:00
Gregory Nutt
eb8f5e548f Purely cosmetic changes resulting from last review IPv6 UDP change 2015-02-16 15:23:02 -06:00
Gregory Nutt
3f5ff4b210 IPv4 mapping to IPv6 implementation. Just for UDP. From Macs Neklyudov 2015-02-16 14:33:58 -06:00
Gregory Nutt
a82b8fd71f Networking: Fix several build errors/warning with IPv4 + IPv6 + multiple networks are enabled. 2015-02-10 06:54:10 -06:00
Gregory Nutt
b756df982d net/: Lots of build problems introduced into multiple NIC support. Many places where conditional logic based on CONFIG_NETDEV_MULTINIC is confused with CONFIG_NET_MULTILINK. Lots of code changed with IPv6 that was never compiled with MULTINIC enabled. Still some problem with parameter passing. 2015-02-09 18:15:34 -06:00
Gregory Nutt
a07a764d42 ICMPv6: Adds basic logic to support verification that we have the IPv6 address in the Neighbor Table. This feature is important because otherwise the first packet sent to a remote peer will fail (it will be replaced with a Neighbor Solicitation). 2015-02-02 13:44:31 -06:00
Gregory Nutt
4ce94a7e95 IPv6: Eliminate a warning from UDP code 2015-02-02 11:37:22 -06:00
Gregory Nutt
4205d68505 Networking: Any linger UDP read-ahead buffers must be freed when UDP socket is closed 2015-01-30 09:44:00 -06:00
Gregory Nutt
a76b87305a Networking: Should fix a few compile errors/warnings reported by Travis 2015-01-30 08:54:40 -06:00
Gregory Nutt
de91d34a19 Networking: Separate out UDP poll logic from socket/net_poll.c into a new udp/udp_netpoll.c; Create a skeleton local/local_netpoll.c for future poll support on Unix domain sockets. 2015-01-30 07:09:25 -06:00
Gregory Nutt
ccc72edc0b Networking: Add UDP read-ahead support and support for poll/select on UDP sockets. From Macs N. 2015-01-30 06:08:26 -06:00
Gregory Nutt
2c7123197c Networking: Move UDP-specifc parts of sendto() out of socket/sendto.c and into udp/udp_sendto.c. Hook in Unix domain sokcet sendto() logic (still just a stub for the moment) 2015-01-28 13:41:24 -06:00
Gregory Nutt
f4bb7f14e1 Networking: Clean up network status collection and presentation for IPv6 2015-01-24 08:26:12 -06:00
Gregory Nutt
e5d1ff373b Networking: IPv4 and IPv6 work together. This fixes a bug necessary to accomplish that as well as cleaning up a couple of other issues 2015-01-23 16:40:18 -06:00
Gregory Nutt
af71b7a1ed Networking: Eliminate a warning with UDP checksums are suppressed 2015-01-23 11:42:12 -06:00
Gregory Nutt
f4ce875711 Networking: Fix issues with UDP packet length and checksum calculations when IPv6 is selected 2015-01-23 09:33:18 -06:00
Gregory Nutt
e22848c19c Networking: UDP checksums must always be used with IPv6 2015-01-23 09:31:44 -06:00
Gregory Nutt
5d31687e75 Correct name of fields in struct sockaddr_in6: sin6_port and sin6_family, not sin_port and sin_family 2015-01-20 18:14:09 -06:00
Gregory Nutt
adc91965ed NSH library: Disable put and get commends of TFTP client is not enabled; disable wget command if web client is not enabled 2015-01-19 10:32:46 -06:00
Gregory Nutt
2842b5c5d6 Networking: Fix some problems with debug is enabled; fix a warning 2015-01-19 10:16:37 -06:00
Gregory Nutt
eb3c6e8390 Networking: Some fixes for compilation when both IPv4 and IPv6 are enabled 2015-01-18 09:23:22 -06:00
Gregory Nutt
f7663ef0ab Networking: Final detangle off IPv4 and IPv6 TCP/UDP send logic. The Networking subsystem now compiles with IPv6 enabled 2015-01-18 08:56:05 -06:00
Gregory Nutt
f7681dbb43 Networking: Detangling IPv6/4 logic in UDP connection structures 2015-01-17 14:13:56 -06:00
Gregory Nutt
94f9312150 Networking: Save the IP domain in the connection structure 2015-01-17 13:07:48 -06:00
Gregory Nutt
e2933ca4cc Networking: Oops. Forgot to add a couple of files that were part of an earlier commit 2015-01-17 09:35:27 -06:00
Gregory Nutt
2c251d845c include/net/if.h: Add a bit to the device flags to indicate if the device packet buffer holds an IPv4 or an IPv6 domain packet. Set/clear the flag along with the correct offset to the application payload data as each packet is received.
net/socket, net/tcp, net/udp:  Add logic to select the domain of the outputgoing packet before sending any UDP or TCP packet.  This sets the bit to indicate the IPv4 or IPv6 domain and the correct offset to the output going payload data.
2015-01-17 07:42:09 -06:00
Gregory Nutt
88a0e82934 Networking: Remove field d_sndata from the device structure. It is the same as d_appdata and unnecessary 2015-01-17 05:59:13 -06:00
Gregory Nutt
8f8259a0d6 Networking: UDP and TCP MSS depends on the IP header size (as well as the link layer header size) and cannot be represented with a single value. 2015-01-16 15:03:10 -06:00
Gregory Nutt
2663538b0a Networking: Replace all references to the macros net_ipaddr_copy, net_ipaddr_hdrcopy, net_ipaddr_cmp, net_ipaddr_hdrcmp, and net_ipaddr_maskcmp with the appropriate IPv4 or IPv6 version of the macro (such as net_ipv4addr_copy). The goal is to support both IPv4 and IPv6 simultaneously. This requires that the macros be distinct and not conditionally defined to one on or the other. 2015-01-16 13:01:08 -06:00
Gregory Nutt
5e938941a6 Networking: Replace all references to net_ipaddr_t with either in_addr_t on net_ipv6addr_t. The goal is to support both IPv4 and IPv6 simultaneously. This requires that the two types be distinct and not conditionally typedef'ed to net_ipaddr_t. 2015-01-16 12:30:18 -06:00
Gregory Nutt
bee89be4f4 Networking: Drivers can have both IPv4 and IPv6 addesses, but a socket can only only one or the other; The socket connnection structures need to include a union of IPv4 and IPv6 addresses for the local address binding and for the remote address connections 2015-01-16 10:01:54 -06:00
Gregory Nutt
5b45605991 Clean a few more IPv6 compilation issues; Add implementation of net_ipv6_maskcmp() 2015-01-15 15:55:52 -06:00
Gregory Nutt
630366272a Networking: Seperate tcp_input() and udp_input() into seprate functions tcp_ipv4_input(), tcp_ipv6_input(), udp_ipv4_input(), and upd_ipv6_input() than can deal will the data offsets caused by the differing sizes of the IP header. 2015-01-15 15:06:46 -06:00
Gregory Nutt
a49f0231d2 Networking: A few more IPv6-related fixes 2015-01-14 18:34:28 -06:00
Gregory Nutt
a7ce1279f9 Networking: (1) Copied all ICMP sources files to net/icmpv6 with proper renaming and removal of IPv4 logic, (2) remove IPv6 logic from files in net/icmp, (3) copied include/nuttx/icmp.h to icmpv6.h and removed IPv4 specific logic, (4) removed all IPv6 logic from icmp.h, (5) IP_HDRLEN became IPv4_HDRLEN and IPv6_HDRLEN, (6) ip_chksum() became ipv4_chksum() and ipv6_chksum(), and (7) added partial support for ICMPv6 statistics. 2015-01-14 16:10:38 -06:00
Gregory Nutt
aa9700c1ab Update comments and read me 2014-11-23 12:52:18 -06:00
Gregory Nutt
d2a323ca19 Back inclusion of ipv6.h 2014-11-22 13:26:27 -06:00
Gregory Nutt
d76ed2cbc5 Fix UDP routing error in last commit 2014-11-22 09:08:06 -06:00
Gregory Nutt
251249a954 Back out a misconception about INADDR_ANY introduce with some previous commits 2014-11-22 07:55:45 -06:00
Gregory Nutt
2c2b5e6738 Fix routing of muli-network UDP packets 2014-11-21 17:44:12 -06:00
Gregory Nutt
15c07e0d67 Network: Misc changes to UDP bind logic for the case of multiple networks 2014-11-21 17:00:08 -06:00
Gregory Nutt
4dd021f351 Some ideas for how port assignments might work with multiple network interfaces 2014-11-21 14:21:30 -06:00
Gregory Nutt
8b2b7afdae Update TODO; Cosmetic changes to comments 2014-11-17 15:34:50 -06:00
Gregory Nutt
2e55db369d Network: All logic will now handle varialbe length link layer protocol headers within incoming packets. This permits use of multiple network interfaces with differing data links. For example, ETHERNET + SLIP 2014-11-15 13:13:23 -06:00
Gregory Nutt
8e5ae2ee18 EFM32: Fix typo in connecting ODD GPIO interrupt. Noted by Pierre 2014-11-08 06:18:21 -06:00
Gregory Nutt
73f3ecf7e2 NET: Rename network interrupt event flags more appropriately: TCP_, UDP_, ICMP_, or PKT_ vs UIP_ 2014-07-06 17:22:02 -06:00
Gregory Nutt
a251259f90 NET: Rename some non-configurable constants UIP_ to IP_ or TCP_ 2014-07-06 16:19:26 -06:00
Gregory Nutt
47a502a5e2 NET: Most of the contents of include/nuttx/net/udp.h moved to net/pkt/udp.h 2014-07-05 14:40:29 -06:00
Gregory Nutt
c5fc24e110 NET: Standardize naming of all protocal header lengths 2014-07-05 13:04:48 -06:00
Gregory Nutt
60246e613b NET: emoved all includes of uip.h; added includes of ip.h wherever needed. Tried to fix problems of the now missing sneak inclusions because uip.h was removed. There are probably a few of these that were missed. 2014-07-04 19:13:08 -06:00
Gregory Nutt
0bb153b8cb Remove all inclusion of uip.h 2014-07-04 16:58:22 -06:00
Gregory Nutt
cce35ce975 NET: More renaming 2014-07-04 15:40:49 -06:00
Gregory Nutt
3e0bd1f1b0 NET: Rename some address comparison macros 2014-07-01 18:11:05 -06:00
Gregory Nutt
96a6c725d5 NET: Some minor clean-up 2014-06-30 19:43:30 -06:00
Gregory Nutt
7dd04db1d2 NET: Rename uip_nextXYZconn to XYZ_netconn 2014-06-30 18:03:58 -06:00
Gregory Nutt
ad3e39e53d NET: Rename uiphdr_ipaddr_copy to net_ipaddr_hdrcopy, uip_ip4addr_conv to net_ip4addr_conv32, and uip_ethaddr_cmp to eth_addr_cmp 2014-06-29 13:20:00 -06:00
Gregory Nutt
c362f21815 NET: Rename uip_ipaddr* to net_ipaddr* 2014-06-29 13:11:08 -06:00
Gregory Nutt
c179369a47 Rename static functions from uip_* to something more appropriate. Globally scoped functions will take more work 2014-06-28 19:26:16 -06:00
Gregory Nutt
8e706eb4ff Rename many functions in net/devif from uip_* to devif_* 2014-06-28 18:36:09 -06:00
Gregory Nutt
5790c94ba3 Rename net/uip to net/devif. Rename uip/uip.h to devif/devif.h 2014-06-28 18:07:02 -06:00
Gregory Nutt
64c8dba8c4 NET: Create net/sockets directory and hook into the build/configuration system 2014-06-28 16:41:55 -06:00
Gregory Nutt
50b749a636 Clean-up naming associated with network checksums 2014-06-27 17:51:32 -06:00
Gregory Nutt
fce2a79abd Rename uip_driver_s net_driver_s 2014-06-27 16:48:12 -06:00
Gregory Nutt
64ba574ecc Move files to net/utils; make appropriate name changes, most for uip_lock to net_lock 2014-06-26 14:23:21 -06:00
Gregory Nutt
e1091251e6 NET: Move statistcs from uip.h to new netstats.h to remove nasty circular inclusion problem. 2014-06-26 09:32:39 -06:00
Gregory Nutt
f57024406a Clean up IGMP naming 2014-06-25 09:52:36 -06:00
Gregory Nutt
abf04708ce Clean up all UDP-related naming 2014-06-24 18:55:01 -06:00
Gregory Nutt
04985d6d1e Clean up all TCP-related naming 2014-06-24 18:12:49 -06:00
Gregory Nutt
5d1f8180d4 Move the remaining files from include/nuttx/net/uip to include/nuttx/net; Rename *_internal.h header files in net/ to just *.h 2014-06-24 10:14:15 -06:00
Gregory Nutt
37646044ac Move include/nuttx/net/uip/uip-arch.h to include/nuttx/net/netdev.h 2014-06-24 09:28:44 -06:00
Gregory Nutt
626469e30c Move include/nuttx/net/uipopt.h to include/nuttx/net/netconfig.h 2014-06-24 08:53:28 -06:00
Gregory Nutt
b9c6b9b425 Networking: Move relevant parts of net/Kconfig to tcp/Kconfig, udp/Kconfig, and pkt/Kconfig 2014-06-18 11:45:55 -06:00
Gregory Nutt
382920b9a9 Move UDP files from net/uip to net/udp 2014-06-18 10:50:09 -06:00