Gregory Nutt
e22deff1ab
TCP connect. Move the location where the socket is marked as connected in order to avoid a potential race condition
2015-05-31 12:24:24 -06:00
Gregory Nutt
b493dde4cf
TCP networking: In the TCP connection operation, it was trying to setup the network monitor BEFORE the socket was successfully connected. This, of course, has ALWAYS failed because the socket is not yet connected and the TCP state is not yet correct for a connected socket. However, because of other changes net_startmonitor(0 no returns a failure condition that causes worse problems when trying to connect. The fix is to move the logic that starts the network monitor to AFTER the socket has been successfully connected.
2015-05-31 11:35:28 -06:00
Gregory Nutt
a47a0d237c
Costmetic changes to networking logic
2015-05-31 10:29:53 -06:00
Gregory Nutt
33085cb309
Networking: The network device list was protected by a re-entrant semaphore. With the recent change to support network device callback, the network stack needs to access the network device list too. Some drivers, however, run the network stack from the interrupt level -- this is bad but a fact in the current state. Of course,those drivers are unable to take the semaphore and will assert.
...
The solution here is to eliminate the device devices semaphore altogether. This eliminates netdev_semtake() and netdev_semgive() and replaces them with net_lock() and net_unlock() which have larger scope as needed for this purpose.
2015-05-31 08:34:03 -06:00
Gregory Nutt
6687e156e6
Revamp last change. IFF_UP only required when allocating callback, not freeing.
2015-05-30 21:13:58 -06:00
Gregory Nutt
28b46c7bfa
To be valid, a network device must not only exist, but be in the UP state
2015-05-30 12:54:18 -06:00
Gregory Nutt
cc340aaa92
TCP networking: Since the network monitor now allocates a callback structure, it is critical to make sure that the networking monitor is stopped when the socket is closed or any other loss of connection. What was innocuous before would now be a memory leak
2015-05-30 11:49:55 -06:00
Gregory Nutt
8b029fbbee
TCP networking: Hook the network monitor into the device event notification logic
2015-05-30 11:29:47 -06:00
Gregory Nutt
933b95ac80
Forgot to add a file in the last commit
2015-05-30 09:17:46 -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
fa8b7c19b7
Forgot to add a file in the last commit
2015-05-29 11:03:02 -06:00
Gregory Nutt
f10fdf7ad4
Networking: Add a test to see a device pointer is still valid
2015-05-29 11:01:03 -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
e28a8b1416
Raw sockets: Correct some compile issues; better modularized device-related logic
2015-05-29 08:47:21 -06:00
Gregory Nutt
988fbf0dcc
Merge branch 'master' of ssh://git.code.sf.net/p/nuttx/git into multinic
...
Conflicts:
nuttx/ChangeLog
2015-05-29 08:15:17 -06:00
Gregory Nutt
5337176cdf
Networking: setsockopt() fails when setting timeouts to values less that an 100 msec. That is because the timeout is limited to stops of 1 decisecond and because the conversion of structure timeval was truncating the microsecond remainder. The utility net_timeval2dsec now accespts and option to determin how it handles the remainder: truncate, discarding the remainder, use the remainder to round to the closed decisecond value, or use any non-zero remainder to the next larger whole decisecond value.
...
For the setsockopt() case, it will always use the final option. This means that a time of zero (i.e., not timeout) can only occur if the value zero was explicated provided to setsockopt().
2015-05-29 07:17:15 -06:00
Gregory Nutt
0595d54470
Correct some comments
2015-05-28 19:44:04 -06:00
Gregory Nutt
4747c04c94
Trivial correction to some comments
2015-05-28 19:43:35 -06:00
Gregory Nutt
b5c005d5a4
Merge remote-tracking branch 'origin/master' into multinic
...
Conflicts:
nuttx/ChangeLog
2015-05-28 19:30:48 -06:00
Gregory Nutt
7ec0725533
Missed a couple of function headers
2015-05-28 19:28:41 -06:00
Gregory Nutt
d319b7c6f0
Networking: PKT logic now uses the device event list
2015-05-28 12:40:05 -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
3606d05888
Merge branch 'multinic'
2015-05-28 09:07:18 -06:00
Gregory Nutt
3260db7dbe
Reorder some network events bitset to make the event class clearer
2015-05-28 08:55:36 -06:00
Gregory Nutt
01d176af76
net_startmonitor.c always returned zero. In the case where a socket has already been closed, it correctly handled the disconnetion event but still returned OK. Returning OK causes the callers of net_startmonitor to assume that the connection was okay, undoing the good things that net_startmonitor did and causing the socket to be marked as connected. This behavior was noted by Pelle Windestam.
2015-05-28 08:23:51 -06:00
Gregory Nutt
0e2b6929b4
Add function headers to prototypes in net/socket/socket.h
2015-05-28 07:26:03 -06:00
Gregory Nutt
d6c3ed1c6f
Networking: Fixes an important TCP bug: 16-bit flags was being converted to 8-bits in a few locations, causing loss of status indications
2015-05-27 17:17:42 -06:00
Gregory Nutt
4fd0192a3e
Networking: No that ARP, ICMP, and ICMPv6 reside in the same list we need to make the definitions of ARP_POLL, ICMP_POLL, and ICMPv6_POLL different because there are small differences in the context for each.
2015-05-27 15:04:51 -06:00
Gregory Nutt
390eeaae69
Add function headers to netdev.h header file
2015-05-27 14:34:15 -06:00
Gregory Nutt
2ecff2a432
Add some missing NETDEV_DOWN support for ICMPv6 auto configuration and router support
2015-05-27 12:49:39 -06:00
Gregory Nutt
7d8e8bc188
Missed a place where NETDEV_DOWN needs to be added to notification flags
2015-05-27 12:22:07 -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
8ecb84ed89
Improve icmp handling if MULTINIC enabled. From Max Neklyudov
2015-05-27 09:26:00 -06:00
Gregory Nutt
608f812407
Fix bug in IPv6 router from Max Neklyudov.
2015-05-13 07:26:24 -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
8cb4e78a1a
Complete implementation of the IPv6 routing logic. From Max Neklyudov.
2015-05-13 07:22:02 -06:00
Gregory Nutt
0f5c35260b
Local sockets: Local stream sockets had problem of double releasing pipes (both server and client attempt release), which causes wrong pipe pair being closed in multi-client case. Solve by adding per connection instance ID to pipe names. From Jussi Kivilinna (2015-05-12).
2015-05-12 07:47:32 -06:00
Gregory Nutt
3c1af2feed
Local sockets: Add poll support for Unix stream sockets. From Jussi Kivilinna.
2015-05-12 07:41:12 -06:00
Gregory Nutt
2fcb93d2ca
Correct some network lock logic: Two error conditions where the network was not being unlocked and one where it was getting unlocked twice. From Jussi Kivilinna.
2015-05-12 07:28:26 -06:00
Gregory Nutt
1f3ee83134
Increase the size of the number of bytes sent from uint16_t to uint32_t in order to avoid TCP errors with long sessions. For exmple:
...
int hello_main(int argc, char *argv[])
{
uint32_t i;
for(i = 0; i < 65536; i++)
{
printf("Hello, World!!\n");
}
printf("press any key!!\n");
if (getchar()=='t')
return 0;
else
return 1;
}
When ran in a Telnet session, the "press any key" is not displayed because the tcp session closed unexpectedly with:
tcp_input: ERROR: conn->sndseq xx, conn->unacked xx"
This is fixed by increasing the width of conn->sent to 32-bits to prevent overflow.
From Rony XLN
2015-05-11 07:14:25 -06:00
Gregory Nutt
d35926ea4a
Fix typo introduced by commit a00f14a60a8ec54fbcf63e44d00f7101ec7cb5a3
2015-05-08 14:19:18 -06:00
Gregory Nutt
00011d4766
Another newly missing semicolon after a debug assertion. Noted by Librae
2015-04-29 15:56:08 -06:00
Gregory Nutt
621eae86b1
Networking: If IPV6 is not enabled, an warning occurs for an unused variable, which is currently used inside the IPV6 block, but declared outside. From ObitalFox.
2015-04-27 11:28:28 -06:00
Gregory Nutt
7a745c3fa4
Use common macro(s) for calculating link layer header length. From Brennan Ashton.
2015-04-13 13:53:13 -06:00
Gregory Nutt
3840c2a14b
Fix several typos in comments
2015-04-09 16:13:03 -06:00
Gregory Nutt
3ba9dda227
socket: net_dupsd: Do not call sockfd_socket() twice. From Juha Niskanen
2015-03-12 08:11:08 -06:00
Gregory Nutt
21d6e41032
Add TUN device. From Max Neklyudov
2015-03-11 06:52:56 -06:00
Gregory Nutt
5c13722416
Networking: Improve the network device registration logic. When multiple link types are used, modify how each interface number is assigned to the device name by incrementing the device number individually for each interface link type. From Max Neklyudov.
2015-02-27 08:23:14 -06:00
Gregory Nutt
19f3d46eb0
Fix a list handling error in netdev_unregister(). From Max Neklyudov
2015-02-27 08:01:31 -06:00
Gregory Nutt
cded7ea682
Fix some time value changes; mostly changing greater than 1000000000 to greater than or equal to 1000000000. From Juha Niskanen
2015-02-20 07:07:36 -06:00
Gregory Nutt
63ab39b274
VFS: The inode unlink method should not be support if operations on the root pseudo-filesystem are disabled.
2015-02-18 09:34:58 -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
d6704a1cd7
Suffer the consequences of moving struct timeval to its correct location
2015-02-15 15:18:35 -06:00
Gregory Nutt
8337710084
Stray semicolon caused compile failure when IPv6 enabled
2015-02-14 09:30:22 -06:00
Gregory Nutt
8840102554
Networking: Divide net_intiialize() into net_setup() and net_initialize() to solve a chicken-and-egg problem. net_setup() must be caleld before up_initialize() is called so that networking data structures are ready to register new network devices.
...
net_initialize() now does only timer related operations and is called AFTER up_initialize() where the timers are configured. This is really.
2015-02-14 06:36:53 -06:00
Gregory Nutt
77d8f2f63d
Add some inclusions of nuttx/net.h to two files. Without these there can be compilation errors in certain configurations. From Max Neklyudov.
2015-02-13 13:43:19 -06:00
Gregory Nutt
005643de2c
Networking: Fix a compilation error recently introduced into the raw packet logic
2015-02-11 09:30:30 -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
8a380a084d
IOB Configuration: Default number of IOB changes must be more than zero is UDP read-ahead is enabled.
2015-02-10 06:25:55 -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
559f1ef825
Networking: Clean up and consolidate some clunky stuff by adding new net_timedwait() function
2015-02-09 07:50:10 -06:00
Gregory Nutt
1928feafca
Networking: Fix some errors that crept in with IPv6
2015-02-06 13:34:19 -06:00
Gregory Nutt
252802d1cd
Remove inclusion of some un-necessary header files.
2015-02-06 08:50:53 -06:00
Gregory Nutt
3e6705b526
IPv6: Separate function that converts prefix lengths to a netmask
2015-02-06 08:11:09 -06:00
Gregory Nutt
10cf7e9634
Make some conditional compilation consistent
2015-02-05 14:26:11 -06:00
Gregory Nutt
3bd6dcf435
IPv6 fixes: Both ICMPv6 autonomous auto-configuration and the ICMPv6 router function appear to be fully functional.
2015-02-05 12:48:02 -06:00
Gregory Nutt
c7f71c99a5
Networking: Changes need to build ICMPv6 'router' configuration on STM32 with network debug enabled
2015-02-05 11:47:56 -06:00
Gregory Nutt
6568d94902
ICMPv6: Add logic to behave like a router (if so configured): NuttX will not send the router advertisement message in response to any router solicitation messages.
2015-02-05 09:43:29 -06:00
Gregory Nutt
111f4a45a3
Forgot to add this file before a previous commit
2015-02-05 09:43:07 -06:00
Gregory Nutt
da1d1d7139
ICMPv6: Add option to send Router Advertisement Messages.
2015-02-05 09:28:00 -06:00
Gregory Nutt
6f3f43d930
IPv6: Add a netmaks for the local link address
2015-02-05 05:43:57 -06:00
Gregory Nutt
453c25cdbb
Minor logic simplification
2015-02-04 21:06:11 -06:00
Gregory Nutt
28b89b7a65
ICMPv6 Auto-configuration: If no router reponds to the Router Solicitation, claim the link local address by sending the Neighbor Advertisement and return success
2015-02-04 16:13:27 -06:00
Gregory Nutt
c5ed77120f
ICMPv6: Separate out Neighbor Advertise message so that we can reuse it
2015-02-04 15:43:54 -06:00
Gregory Nutt
f558dfbb96
Remove unnecessary, inappropriate inclusion of ARP head file in IPv6 code
2015-02-04 14:52:46 -06:00
Gregory Nutt
24d800398e
Networking: Break out Ethernet definitions into a separate file; add IPv6 multicast addresses as common globals, Ethernet drivers need to filter link-local, all nodes Ethernet address
2015-02-04 14:51:20 -06:00
Gregory Nutt
6159d1307d
Forgot to add a file from a previous commit
2015-02-03 17:45:24 -06:00
Gregory Nutt
0e38ca9a42
ICMPv6: Fix some multi-cast addresses
2015-02-03 17:26:05 -06:00
Gregory Nutt
f7ace410d1
Minor updates to comments, debug messages, documentation
2015-02-03 17:01:48 -06:00
Gregory Nutt
154d3ce955
ICMPv6: Some initial bugfix from first tests of the ICMPv6 auto-configuration logic. so far so good but a lot more testing is needed
2015-02-03 16:19:08 -06:00
Gregory Nutt
9791e829f5
ICMPv6: This completes coding of the ICMPv6 auto-configuration feature. It is not yet functional
2015-02-03 15:40:56 -06:00
Gregory Nutt
66f0198e3f
Networking: Add support for sending ICMPv6 Router Solicitation and receiving Router advertisement. This is a part of the ICMPv6 auto-configuration logic is still still not complete
2015-02-03 13:25:28 -06:00
Gregory Nutt
553b93cd23
Costmetic updates to comments
2015-02-03 11:19:33 -06:00
Gregory Nutt
0e23712db4
Add an ioctal() that can be used to perform ICMPv6 auto-configuration
2015-02-03 08:54:42 -06:00
Gregory Nutt
b427e8288b
Add netlib and application hooks for ICMPv6 auto-configuration (still incomplete
2015-02-03 08:01:55 -06:00
Gregory Nutt
d89073ae13
Add some comments to C files
2015-02-03 06:04:54 -06:00
Gregory Nutt
88f6573f31
ICMPv6: Add file/build structure that will eventually support ICMPv6 auto-configuration
2015-02-02 17:54:48 -06:00
Gregory Nutt
f019d11384
Restore 20Msec default
2015-02-02 14:59:49 -06:00
Gregory Nutt
bba3fccd74
Networking: Apply the same ARP fix for the Neighbor Solicitation logic
2015-02-02 14:50:16 -06:00
Gregory Nutt
e4c602747b
Networking: Fixes another CONFIG_NET_NOINTS issues. When called sem_timedwait() with the network locked, the network stays logcked while we wait which is not what we want (without CONFIG_NET_NOINTS, interrupts are re-enabled while we wait and all is well).
2015-02-02 14:48:11 -06:00
Gregory Nutt
fb72b1b1b7
Auto neighbor solicitation is no longer EXPERIMENTAL and is the default for the DK-TM4C129X/ipv6 configuration
2015-02-02 14:09:06 -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