Add uIP access to ICMP protocol

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@869 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2008-09-02 20:42:01 +00:00
parent 51a1ea2774
commit db24d24ac2
35 changed files with 201 additions and 41 deletions
+65 -7
View File
@@ -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;
uint8 icode;
uint16 icmpchksum;
uint8 type; /* Defines the format of the ICMP message */
uint8 icode; /* Further qualifies the ICMP messsage */
uint16 icmpchksum; /* Checksum of ICMP header and data */
/* 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;
+16
View File
@@ -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 */
+6 -1
View File
@@ -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.
+6
View File
@@ -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 */