summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-11-17 15:34:50 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-11-17 15:34:50 -0600
commit1117846b864d3016a67d6130cf81a15b10bf085a (patch)
treea82d42d9f3489950ec3a5272b19f8539df9b73a0 /nuttx
parent3f5c77926b0d250d00b6e5d95223ad800ec0eb2d (diff)
downloadnuttx-1117846b864d3016a67d6130cf81a15b10bf085a.tar.gz
nuttx-1117846b864d3016a67d6130cf81a15b10bf085a.tar.bz2
nuttx-1117846b864d3016a67d6130cf81a15b10bf085a.zip
Update TODO; Cosmetic changes to comments
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/TODO24
-rw-r--r--nuttx/net/netdev/netdev_findbyaddr.c3
-rw-r--r--nuttx/net/udp/udp_conn.c27
3 files changed, 41 insertions, 13 deletions
diff --git a/nuttx/TODO b/nuttx/TODO
index eb078b044..06ce3ddcc 100644
--- a/nuttx/TODO
+++ b/nuttx/TODO
@@ -15,7 +15,7 @@ nuttx/
(8) Kernel/Protected Builds
(4) C++ Support
(6) Binary loaders (binfmt/)
- (11) Network (net/, drivers/net)
+ (12) Network (net/, drivers/net)
(4) USB (drivers/usbdev, drivers/usbhost)
(10) Libraries (libc/, )
(11) File system/Generic drivers (fs/, drivers/)
@@ -829,6 +829,28 @@ o Network (net/, drivers/net)
Priority: Medium. Important on slow applications that will not accept
connections promptly.
+ Title: PER DEVICE PORT NUMBERS
+ Description: TCP and UDP ports numbers are assigned as separater but global resources.
+ Separate meaning that a UDP and TCP socket with the same port number are
+ distinct. But global in the since that each TCP port number must be unique
+ and TCP sockets. UDP port numbers must be similarly unique.
+
+ This causes prorblems for the case where there multiple network devices
+ configured into the system. In that case, it should be possible to assign
+ the same TCP (or UDP) port number if the connection is associated with
+ different network devices. For example, if there are two instances of
+ a webserver, each listening for connections on a different device, each
+ should be able to use port 80 to listen for connections.
+
+ The solution is is move the TCP and UDP port related resources: They
+ should not be global but shoud, instead, by a part of the device structure,
+ struct net_drivers_s.
+
+ Status: Open
+ Priority: Very low if you have only a single network interface. Higher if you
+ have more than one. Very high if you need to have the same port numbers
+ on each network served by the device.
+
o USB (drivers/usbdev, drivers/usbhost)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/nuttx/net/netdev/netdev_findbyaddr.c b/nuttx/net/netdev/netdev_findbyaddr.c
index 9130166c7..79ade21dc 100644
--- a/nuttx/net/netdev/netdev_findbyaddr.c
+++ b/nuttx/net/netdev/netdev_findbyaddr.c
@@ -166,7 +166,7 @@ FAR struct net_driver_s *netdev_findbyaddr(const net_ipaddr_t addr)
/* No.. The address lies on an external network */
#ifdef CONFIG_NET_ROUTE
- /* If we have a routing table, then perhaps we can find the the local
+ /* If we have a routing table, then perhaps we can find the local
* address of a router that can forward packets to the external network.
*/
@@ -202,6 +202,7 @@ FAR struct net_driver_s *netdev_findbyaddr(const net_ipaddr_t addr)
{
dev = g_netdevices;
}
+
netdev_semgive();
/* If we will did not find the network device, then we might as well fail
diff --git a/nuttx/net/udp/udp_conn.c b/nuttx/net/udp/udp_conn.c
index c7d7d2c14..3fb4d1ae2 100644
--- a/nuttx/net/udp/udp_conn.c
+++ b/nuttx/net/udp/udp_conn.c
@@ -129,7 +129,7 @@ static FAR struct udp_conn_s *udp_find_conn(uint16_t portno)
{
if (g_udp_connections[ i ].lport == portno)
{
- return &g_udp_connections[ i ];
+ return &g_udp_connections[i];
}
}
@@ -365,7 +365,7 @@ FAR struct udp_conn_s *udp_nextconn(FAR struct udp_conn_s *conn)
* Name: udp_bind()
*
* Description:
- * This function implements the UIP specific parts of the standard UDP
+ * This function implements the low level parts of the standard UDP
* bind() operation.
*
* Assumptions:
@@ -397,7 +397,7 @@ int udp_bind(FAR struct udp_conn_s *conn, FAR const struct sockaddr_in *addr)
flags = net_lock();
- /* Is any other UDP connection bound to this port? */
+ /* Is any other UDP connection already bound to this port? */
if (!udp_find_conn(addr->sin_port))
{
@@ -417,14 +417,19 @@ int udp_bind(FAR struct udp_conn_s *conn, FAR const struct sockaddr_in *addr)
* Name: udp_connect()
*
* Description:
- * This function sets up a new UDP connection. The function will
- * automatically allocate an unused local port for the new
- * connection. However, another port can be chosen by using the
- * udp_bind() call, after the udp_connect() function has been
- * called.
- *
- * This function is called as part of the implementation of sendto
- * and recvfrom.
+ * This function simply assigns a remote address to UDP "connection"
+ * structure. This function is called as part of the implementation of:
+ *
+ * - connect(). If connect() is called for a SOCK_DGRAM socket, then
+ * this logic performs the moral equivalent of connec() operation
+ * for the UDP socket.
+ * - recvfrom() and sendto(). This function is called to set the
+ * remote address of the peer.
+ *
+ * The function will automatically allocate an unused local port for the
+ * new connection if the socket is not yet bound to a local address.
+ * However, another port can be chosen by using the udp_bind() call,
+ * after the udp_connect() function has been called.
*
* Input Parameters:
* conn - A reference to UDP connection structure