summaryrefslogtreecommitdiff
path: root/nuttx/include/net
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-09-02 20:42:01 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-09-02 20:42:01 +0000
commit8a2d54981a1c1ee6563f3444cffc1d2d4784156e (patch)
tree0274aa01d9ff373e4ff01ae8b88cf03de27800da /nuttx/include/net
parente7d4d115566c113f2cba32f16857ea5e90c03be0 (diff)
downloadpx4-nuttx-8a2d54981a1c1ee6563f3444cffc1d2d4784156e.tar.gz
px4-nuttx-8a2d54981a1c1ee6563f3444cffc1d2d4784156e.tar.bz2
px4-nuttx-8a2d54981a1c1ee6563f3444cffc1d2d4784156e.zip
Add uIP access to ICMP protocol
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@869 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/include/net')
-rw-r--r--nuttx/include/net/uip/uip-icmp.h72
-rw-r--r--nuttx/include/net/uip/uip-tcp.h16
-rw-r--r--nuttx/include/net/uip/uip.h7
-rw-r--r--nuttx/include/net/uip/uipopt.h6
4 files changed, 93 insertions, 8 deletions
diff --git a/nuttx/include/net/uip/uip-icmp.h b/nuttx/include/net/uip/uip-icmp.h
index 816da04ab..632653ab8 100644
--- a/nuttx/include/net/uip/uip-icmp.h
+++ b/nuttx/include/net/uip/uip-icmp.h
@@ -2,7 +2,7 @@
* net/uip/uip-icmp.h
* Header file for the uIP ICMP stack.
*
- * Copyright (C) 2007 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* This logic was leveraged from uIP which also has a BSD-style license:
@@ -53,6 +53,56 @@
* Definitions
****************************************************************************/
+/* ICMP/ICMP6 definitions */
+
+/* ICMP/ICMP6 Message Types */
+
+#define ICMP_ECHO_REPLY 0 /* RFC 792 */
+#define ICMP_DEST_UNREACHABLE 3 /* RFC 792 */
+#define ICMP_SRC_QUENCH 4 /* RFC 792 */
+#define ICMP_REDIRECT 5 /* RFC 792 */
+#define ICMP_ALT_HOST_ADDRESS 6
+#define ICMP_ECHO_REQUEST 8 /* RFC 792 */
+#define ICMP_ROUTER_ADVERTISEMENT 9 /* RFC 1256 */
+#define ICMP_ROUTER_SOLICITATION 10 /* RFC 1256 */
+#define ICMP_TIME_EXCEEDED 11 /* RFC 792 */
+#define ICMP_PARAMETER_PROBLEM 12
+#define ICMP_TIMESTAMP_REQUEST 13
+#define ICMP_TIMESTAMP_REPLY 14
+#define ICMP_INFORMATION_REQUEST 15
+#define ICMP_INFORMATION_REPLY 16
+#define ICMP_ADDRESS_MASK_REQUEST 17
+#define ICMP_ADDRESS_MASK_REPLY 18
+#define ICMP_TRACEROUTE 30
+#define ICMP_CONVERSION_ERROR 31
+#define ICMP_MOBILE_HOST_REDIRECT 32
+#define ICMP_IPV6_WHEREAREYOU 33
+#define ICMP_IPV6_IAMHERE 34
+#define ICMP_MOBILE_REGIS_REQUEST 35
+#define ICMP_MOBILE_REGIS_REPLY 36
+#define ICMP_DOMAIN_NAME_REQUEST 37
+#define ICMP_DOMAIN_NAME_REPLY 38
+#define ICMP_SKIP_DISCOVERY_PROTO 39
+#define ICMP_PHOTURIS_SECURITY_FAIL 40
+#define ICMP_EXP_MOBILE_PROTO 41 /* RFC 4065 */
+
+/* ICMP6 Message Types */
+
+#define ICMP6_ECHO_REPLY 129
+#define ICMP6_ECHO_REQUEST 128
+#define ICMP6_NEIGHBOR_SOLICITATION 135
+#define ICMP6_NEIGHBOR_ADVERTISEMENT 136
+
+#define ICMP6_FLAG_S (1 << 6)
+
+#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1
+#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2
+
+/* Header sizes */
+
+#define UIP_ICMPH_LEN 4 /* Size of ICMP header */
+#define UIP_IPICMPH_LEN (UIP_ICMPH_LEN + UIP_IPH_LEN) /* Size of IP + ICMP header */
+
/****************************************************************************
* Public Type Definitions
****************************************************************************/
@@ -91,19 +141,27 @@ struct uip_icmpip_hdr
#endif /* CONFIG_NET_IPv6 */
- /* ICMP (echo) header */
+ /* ICMP header */
+
+ uint8 type; /* Defines the format of the ICMP message */
+ uint8 icode; /* Further qualifies the ICMP messsage */
+ uint16 icmpchksum; /* Checksum of ICMP header and data */
- uint8 type;
- uint8 icode;
- uint16 icmpchksum;
+ /* Data following the ICMP header contains the data specific to the
+ * message type indicated by the Type and Code fields.
+ */
#ifndef CONFIG_NET_IPv6
- uint16 id;
- uint16 seqno;
+ /* ICMP_ECHO_REQUEST and ICMP_ECHO_REPLY data */
+
+ uint16 id; /* Used to match requests with replies */
+ uint16 seqno; /* " " "" " " " " " " " " */
#else /* !CONFIG_NET_IPv6 */
+ /* ICMP6_ECHO_REQUEST and ICMP6_ECHO_REPLY data */
+
uint8 flags;
uint8 reserved1;
uint8 reserved2;
diff --git a/nuttx/include/net/uip/uip-tcp.h b/nuttx/include/net/uip/uip-tcp.h
index 0fa12880c..e0d696981 100644
--- a/nuttx/include/net/uip/uip-tcp.h
+++ b/nuttx/include/net/uip/uip-tcp.h
@@ -59,6 +59,22 @@
* Definitions
****************************************************************************/
+/* TCP definitions */
+
+#define TCP_FIN 0x01
+#define TCP_SYN 0x02
+#define TCP_RST 0x04
+#define TCP_PSH 0x08
+#define TCP_ACK 0x10
+#define TCP_URG 0x20
+#define TCP_CTL 0x3f
+
+#define TCP_OPT_END 0 /* End of TCP options list */
+#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */
+#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */
+
+#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */
+
/* The TCP states used in the struct uip_conn tcpstateflags field */
#define UIP_CLOSED 0 /* The connection is not in use and available */
diff --git a/nuttx/include/net/uip/uip.h b/nuttx/include/net/uip/uip.h
index 08f2c14a3..54a94bf98 100644
--- a/nuttx/include/net/uip/uip.h
+++ b/nuttx/include/net/uip/uip.h
@@ -98,6 +98,11 @@
* UIP_TIMEDOUT IN: The connection has been aborted due to too many
* retransmissions. (TCP only)
* OUT: Not used
+ * UIP_ECHOREPLY IN: An ICMP Echo Reply has been received. Used to support
+ * ICMP ping from applications. (ICMP only)
+ * OUT: Cleared (only) by the application logic to indicate
+ * that the reply was processed, suppressing further
+ * attempts to process the reply.
*/
#define UIP_ACKDATA (1 << 0)
@@ -109,8 +114,8 @@
#define UIP_ABORT (1 << 6)
#define UIP_CONNECTED (1 << 7)
#define UIP_TIMEDOUT (1 << 8)
+#define UIP_ECHOREPLY (1 << 9)
-#define UIP_DATA_EVENTS (UIP_ACKDATA|UIP_NEWDATA|UIP_REXMIT|UIP_POLL)
#define UIP_CONN_EVENTS (UIP_CLOSE|UIP_ABORT|UIP_CONNECTED|UIP_TIMEDOUT)
/* The buffer size available for user data in the d_buf buffer.
diff --git a/nuttx/include/net/uip/uipopt.h b/nuttx/include/net/uip/uipopt.h
index 98a5f4fce..e71ae00df 100644
--- a/nuttx/include/net/uip/uipopt.h
+++ b/nuttx/include/net/uip/uipopt.h
@@ -98,6 +98,12 @@
#define UIP_REASS_MAXAGE (20*10) /* 20 seconds */
+/* ICMP configuration options */
+
+#if !defined(CONFIG_NET_ICMP) || defined(CONFIG_DISABLE_CLOCK)
+# undef CONFIG_NET_ICMP_PING
+#endif
+
/* UDP configuration options */
/* The maximum amount of concurrent UDP connection, Default: 10 */