diff mbox

Add helper: odp_icmp.h

Message ID 1397012499-4089-1-git-send-email-weilong.chen@linaro.org
State Accepted
Commit 66348e4bfe63a87220f1747ac05d2ae7db494985
Headers show

Commit Message

Weilong Chen April 9, 2014, 3:01 a.m. UTC
Signed-off-by: Weilong Chen <weilong.chen@linaro.org>
---
 include/helper/odp_icmp.h |   98 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)
 create mode 100644 include/helper/odp_icmp.h

Comments

Maxim Uvarov April 9, 2014, 8:03 a.m. UTC | #1
On 04/09/2014 07:01 AM, Weilong Chen wrote:
> Signed-off-by: Weilong Chen <weilong.chen@linaro.org>
> ---
>   include/helper/odp_icmp.h |   98 +++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 98 insertions(+)
>   create mode 100644 include/helper/odp_icmp.h
>
> diff --git a/include/helper/odp_icmp.h b/include/helper/odp_icmp.h
> new file mode 100644
> index 0000000..55d18a2
> --- /dev/null
> +++ b/include/helper/odp_icmp.h
> @@ -0,0 +1,98 @@
> +/* Copyright (c) 2014, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier:		 BSD-3-Clause
> + */
> +
> +
> +/**
> + * @file
> + *
> + * ODP ICMP header
> + */
> +
> +#ifndef ODP_ICMP_H_
> +#define ODP_ICMP_H_
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +#include <odp_align.h>
> +#include <odp_debug.h>
> +#include <odp_byteorder.h>
> +
> +/** ICMP header length */
> +#define ODP_ICMPHDR_LEN 8
> +
> +/** ICMP header */
> +typedef struct ODP_PACKED {
> +	u_int8_t type;		/** message type */
> +	u_int8_t code;		/** type sub-code */
> +	uint16be_t chksum;
> +	union {
> +		struct {
> +			uint16be_t id;
> +			uint16be_t sequence;
> +		} echo;			/** echo datagram */
> +		u_int32_t gateway;	/** gateway address */
> +		struct {
> +			uint16be_t __unused;
> +			uint16be_t mtu;
> +		} frag;			/** path mtu discovery */
> +	} un;
> +} odp_icmphdr_t;
> +
> +#define ICMP_ECHOREPLY		0	/** Echo Reply			*/
> +#define ICMP_DEST_UNREACH	3	/** Destination Unreachable	*/
> +#define ICMP_SOURCE_QUENCH	4	/** Source Quench		*/
> +#define ICMP_REDIRECT		5	/** Redirect (change route)	*/
> +#define ICMP_ECHO		8	/** Echo Request			*/
> +#define ICMP_TIME_EXCEEDED	11	/** Time Exceeded		*/
> +#define ICMP_PARAMETERPROB	12	/** Parameter Problem		*/
> +#define ICMP_TIMESTAMP		13	/** Timestamp Request		*/
> +#define ICMP_TIMESTAMPREPLY	14	/** Timestamp Reply		*/
> +#define ICMP_INFO_REQUEST	15	/** Information Request		*/
> +#define ICMP_INFO_REPLY		16	/** Information Reply		*/
formating here
> +#define ICMP_ADDRESS		17	/** Address Mask Request		*/
> +#define ICMP_ADDRESSREPLY	18	/** Address Mask Reply		*/
> +#define NR_ICMP_TYPES		18
> +
> +
> +/** Codes for UNREACH. */
> +#define ICMP_NET_UNREACH	0	/** Network Unreachable		*/
> +#define ICMP_HOST_UNREACH	1	/** Host Unreachable		*/
> +#define ICMP_PROT_UNREACH	2	/** Protocol Unreachable		*/
> +#define ICMP_PORT_UNREACH	3	/** Port Unreachable		*/
> +#define ICMP_FRAG_NEEDED	4	/** Fragmentation Needed/DF set	*/
> +#define ICMP_SR_FAILED		5	/** Source Route failed		*/
> +#define ICMP_NET_UNKNOWN	6
> +#define ICMP_HOST_UNKNOWN	7
> +#define ICMP_HOST_ISOLATED	8
> +#define ICMP_NET_ANO		9
> +#define ICMP_HOST_ANO		10
> +#define ICMP_NET_UNR_TOS	11
> +#define ICMP_HOST_UNR_TOS	12
> +#define ICMP_PKT_FILTERED	13	/** Packet filtered */
> +#define ICMP_PREC_VIOLATION	14	/** Precedence violation */
> +#define ICMP_PREC_CUTOFF	15	/** Precedence cut off */
> +#define NR_ICMP_UNREACH		15	/** instead of hardcoding immediate value */
formating here.

Maxim.

> +
> +/** Codes for REDIRECT. */
> +#define ICMP_REDIR_NET		0	/** Redirect Net			*/
> +#define ICMP_REDIR_HOST		1	/** Redirect Host		*/
> +#define ICMP_REDIR_NETTOS	2	/** Redirect Net for TOS		*/
> +#define ICMP_REDIR_HOSTTOS	3	/** Redirect Host for TOS	*/
> +
> +/** Codes for TIME_EXCEEDED. */
> +#define ICMP_EXC_TTL		0	/** TTL count exceeded		*/
> +#define ICMP_EXC_FRAGTIME	1	/** Fragment Reass time exceeded	*/
> +
> +/** @internal Compile time assert */
> +ODP_ASSERT(sizeof(odp_icmphdr_t) == ODP_ICMPHDR_LEN, ODP_ICMPHDR_T__SIZE_ERROR);
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif
Ola Liljedahl April 9, 2014, 8:25 a.m. UTC | #2
+       u_int8_t type;          /** message type */
+       u_int8_t code;          /** type sub-code */

Why are we not using "uint8_t"?

+               u_int32_t gateway;      /** gateway address */
And shouldn't we be using "uint32be_t" here (I assume there exists a 32-bit
big endian integer type).



On 9 April 2014 10:03, Maxim Uvarov <maxim.uvarov@linaro.org> wrote:

> On 04/09/2014 07:01 AM, Weilong Chen wrote:
>
>> Signed-off-by: Weilong Chen <weilong.chen@linaro.org>
>> ---
>>   include/helper/odp_icmp.h |   98 ++++++++++++++++++++++++++++++
>> +++++++++++++++
>>   1 file changed, 98 insertions(+)
>>   create mode 100644 include/helper/odp_icmp.h
>>
>> diff --git a/include/helper/odp_icmp.h b/include/helper/odp_icmp.h
>> new file mode 100644
>> index 0000000..55d18a2
>> --- /dev/null
>> +++ b/include/helper/odp_icmp.h
>> @@ -0,0 +1,98 @@
>> +/* Copyright (c) 2014, Linaro Limited
>> + * All rights reserved.
>> + *
>> + * SPDX-License-Identifier:             BSD-3-Clause
>> + */
>> +
>> +
>> +/**
>> + * @file
>> + *
>> + * ODP ICMP header
>> + */
>> +
>> +#ifndef ODP_ICMP_H_
>> +#define ODP_ICMP_H_
>> +
>> +#ifdef __cplusplus
>> +extern "C" {
>> +#endif
>> +
>> +#include <odp_align.h>
>> +#include <odp_debug.h>
>> +#include <odp_byteorder.h>
>> +
>> +/** ICMP header length */
>> +#define ODP_ICMPHDR_LEN 8
>> +
>> +/** ICMP header */
>> +typedef struct ODP_PACKED {
>> +       u_int8_t type;          /** message type */
>> +       u_int8_t code;          /** type sub-code */
>> +       uint16be_t chksum;
>> +       union {
>> +               struct {
>> +                       uint16be_t id;
>> +                       uint16be_t sequence;
>> +               } echo;                 /** echo datagram */
>> +               u_int32_t gateway;      /** gateway address */
>> +               struct {
>> +                       uint16be_t __unused;
>> +                       uint16be_t mtu;
>> +               } frag;                 /** path mtu discovery */
>> +       } un;
>> +} odp_icmphdr_t;
>> +
>> +#define ICMP_ECHOREPLY         0       /** Echo Reply                  */
>> +#define ICMP_DEST_UNREACH      3       /** Destination Unreachable     */
>> +#define ICMP_SOURCE_QUENCH     4       /** Source Quench               */
>> +#define ICMP_REDIRECT          5       /** Redirect (change route)     */
>> +#define ICMP_ECHO              8       /** Echo Request
>>        */
>> +#define ICMP_TIME_EXCEEDED     11      /** Time Exceeded               */
>> +#define ICMP_PARAMETERPROB     12      /** Parameter Problem           */
>> +#define ICMP_TIMESTAMP         13      /** Timestamp Request           */
>> +#define ICMP_TIMESTAMPREPLY    14      /** Timestamp Reply             */
>> +#define ICMP_INFO_REQUEST      15      /** Information Request         */
>> +#define ICMP_INFO_REPLY                16      /** Information Reply
>>       */
>>
> formating here
>
>> +#define ICMP_ADDRESS           17      /** Address Mask Request
>>        */
>> +#define ICMP_ADDRESSREPLY      18      /** Address Mask Reply          */
>> +#define NR_ICMP_TYPES          18
>> +
>> +
>> +/** Codes for UNREACH. */
>> +#define ICMP_NET_UNREACH       0       /** Network Unreachable         */
>> +#define ICMP_HOST_UNREACH      1       /** Host Unreachable            */
>> +#define ICMP_PROT_UNREACH      2       /** Protocol Unreachable
>>        */
>> +#define ICMP_PORT_UNREACH      3       /** Port Unreachable            */
>> +#define ICMP_FRAG_NEEDED       4       /** Fragmentation Needed/DF set */
>> +#define ICMP_SR_FAILED         5       /** Source Route failed         */
>> +#define ICMP_NET_UNKNOWN       6
>> +#define ICMP_HOST_UNKNOWN      7
>> +#define ICMP_HOST_ISOLATED     8
>> +#define ICMP_NET_ANO           9
>> +#define ICMP_HOST_ANO          10
>> +#define ICMP_NET_UNR_TOS       11
>> +#define ICMP_HOST_UNR_TOS      12
>> +#define ICMP_PKT_FILTERED      13      /** Packet filtered */
>> +#define ICMP_PREC_VIOLATION    14      /** Precedence violation */
>> +#define ICMP_PREC_CUTOFF       15      /** Precedence cut off */
>> +#define NR_ICMP_UNREACH                15      /** instead of hardcoding
>> immediate value */
>>
> formating here.
>
> Maxim.
>
>  +
>> +/** Codes for REDIRECT. */
>> +#define ICMP_REDIR_NET         0       /** Redirect Net
>>        */
>> +#define ICMP_REDIR_HOST                1       /** Redirect Host
>>       */
>> +#define ICMP_REDIR_NETTOS      2       /** Redirect Net for TOS
>>        */
>> +#define ICMP_REDIR_HOSTTOS     3       /** Redirect Host for TOS       */
>> +
>> +/** Codes for TIME_EXCEEDED. */
>> +#define ICMP_EXC_TTL           0       /** TTL count exceeded          */
>> +#define ICMP_EXC_FRAGTIME      1       /** Fragment Reass time exceeded
>>        */
>> +
>> +/** @internal Compile time assert */
>> +ODP_ASSERT(sizeof(odp_icmphdr_t) == ODP_ICMPHDR_LEN,
>> ODP_ICMPHDR_T__SIZE_ERROR);
>> +
>> +#ifdef __cplusplus
>> +}
>> +#endif
>> +
>> +#endif
>>
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
Weilong Chen April 9, 2014, 9:35 a.m. UTC | #3
Thanks,

Will change
​
u_int8_t to
​
uint8_t and
​
u_int32_t to
​
uint32be_t.


On 9 April 2014 16:25, Ola Liljedahl <ola.liljedahl@linaro.org> wrote:

> +
> ​​
> u_int8_t type;          /** message type */
> +       u_int8_t code;          /** type sub-code */
>
> Why are we not using "
> ​​
> uint8_t"?
>


> ​​
> u_int32_t gateway;      /** gateway address */
> And shouldn't we be using "
> ​​
> uint32be_t" here (I assume there exists a 32-bit big endian integer type).
>
>
>
> On 9 April 2014 10:03, Maxim Uvarov <maxim.uvarov@linaro.org> wrote:
>
>> On 04/09/2014 07:01 AM, Weilong Chen wrote:
>>
>>> Signed-off-by: Weilong Chen <weilong.chen@linaro.org>
>>> ---
>>>   include/helper/odp_icmp.h |   98 ++++++++++++++++++++++++++++++
>>> +++++++++++++++
>>>   1 file changed, 98 insertions(+)
>>>   create mode 100644 include/helper/odp_icmp.h
>>>
>>> diff --git a/include/helper/odp_icmp.h b/include/helper/odp_icmp.h
>>> new file mode 100644
>>> index 0000000..55d18a2
>>> --- /dev/null
>>> +++ b/include/helper/odp_icmp.h
>>> @@ -0,0 +1,98 @@
>>> +/* Copyright (c) 2014, Linaro Limited
>>> + * All rights reserved.
>>> + *
>>> + * SPDX-License-Identifier:             BSD-3-Clause
>>> + */
>>> +
>>> +
>>> +/**
>>> + * @file
>>> + *
>>> + * ODP ICMP header
>>> + */
>>> +
>>> +#ifndef ODP_ICMP_H_
>>> +#define ODP_ICMP_H_
>>> +
>>> +#ifdef __cplusplus
>>> +extern "C" {
>>> +#endif
>>> +
>>> +#include <odp_align.h>
>>> +#include <odp_debug.h>
>>> +#include <odp_byteorder.h>
>>> +
>>> +/** ICMP header length */
>>> +#define ODP_ICMPHDR_LEN 8
>>> +
>>> +/** ICMP header */
>>> +typedef struct ODP_PACKED {
>>> +       u_int8_t type;          /** message type */
>>> +       u_int8_t code;          /** type sub-code */
>>> +       uint16be_t chksum;
>>> +       union {
>>> +               struct {
>>> +                       uint16be_t id;
>>> +                       uint16be_t sequence;
>>> +               } echo;                 /** echo datagram */
>>> +               u_int32_t gateway;      /** gateway address */
>>> +               struct {
>>> +                       uint16be_t __unused;
>>> +                       uint16be_t mtu;
>>> +               } frag;                 /** path mtu discovery */
>>> +       } un;
>>> +} odp_icmphdr_t;
>>> +
>>> +#define ICMP_ECHOREPLY         0       /** Echo Reply
>>>  */
>>> +#define ICMP_DEST_UNREACH      3       /** Destination Unreachable
>>> */
>>> +#define ICMP_SOURCE_QUENCH     4       /** Source Quench
>>> */
>>> +#define ICMP_REDIRECT          5       /** Redirect (change route)
>>> */
>>> +#define ICMP_ECHO              8       /** Echo Request
>>>        */
>>> +#define ICMP_TIME_EXCEEDED     11      /** Time Exceeded
>>> */
>>> +#define ICMP_PARAMETERPROB     12      /** Parameter Problem
>>> */
>>> +#define ICMP_TIMESTAMP         13      /** Timestamp Request
>>> */
>>> +#define ICMP_TIMESTAMPREPLY    14      /** Timestamp Reply
>>> */
>>> +#define ICMP_INFO_REQUEST      15      /** Information Request
>>> */
>>> +#define ICMP_INFO_REPLY                16      /** Information Reply
>>>         */
>>>
>> formating here
>>
>>> +#define ICMP_ADDRESS           17      /** Address Mask Request
>>>        */
>>> +#define ICMP_ADDRESSREPLY      18      /** Address Mask Reply
>>>  */
>>> +#define NR_ICMP_TYPES          18
>>> +
>>> +
>>> +/** Codes for UNREACH. */
>>> +#define ICMP_NET_UNREACH       0       /** Network Unreachable
>>> */
>>> +#define ICMP_HOST_UNREACH      1       /** Host Unreachable
>>>  */
>>> +#define ICMP_PROT_UNREACH      2       /** Protocol Unreachable
>>>        */
>>> +#define ICMP_PORT_UNREACH      3       /** Port Unreachable
>>>  */
>>> +#define ICMP_FRAG_NEEDED       4       /** Fragmentation Needed/DF set
>>> */
>>> +#define ICMP_SR_FAILED         5       /** Source Route failed
>>> */
>>> +#define ICMP_NET_UNKNOWN       6
>>> +#define ICMP_HOST_UNKNOWN      7
>>> +#define ICMP_HOST_ISOLATED     8
>>> +#define ICMP_NET_ANO           9
>>> +#define ICMP_HOST_ANO          10
>>> +#define ICMP_NET_UNR_TOS       11
>>> +#define ICMP_HOST_UNR_TOS      12
>>> +#define ICMP_PKT_FILTERED      13      /** Packet filtered */
>>> +#define ICMP_PREC_VIOLATION    14      /** Precedence violation */
>>> +#define ICMP_PREC_CUTOFF       15      /** Precedence cut off */
>>> +#define NR_ICMP_UNREACH                15      /** instead of
>>> hardcoding immediate value */
>>>
>> formating here.
>>
>> Maxim.
>>
>>  +
>>> +/** Codes for REDIRECT. */
>>> +#define ICMP_REDIR_NET         0       /** Redirect Net
>>>        */
>>> +#define ICMP_REDIR_HOST                1       /** Redirect Host
>>>         */
>>> +#define ICMP_REDIR_NETTOS      2       /** Redirect Net for TOS
>>>        */
>>> +#define ICMP_REDIR_HOSTTOS     3       /** Redirect Host for TOS
>>> */
>>> +
>>> +/** Codes for TIME_EXCEEDED. */
>>> +#define ICMP_EXC_TTL           0       /** TTL count exceeded
>>>  */
>>> +#define ICMP_EXC_FRAGTIME      1       /** Fragment Reass time exceeded
>>>        */
>>> +
>>> +/** @internal Compile time assert */
>>> +ODP_ASSERT(sizeof(odp_icmphdr_t) == ODP_ICMPHDR_LEN,
>>> ODP_ICMPHDR_T__SIZE_ERROR);
>>> +
>>> +#ifdef __cplusplus
>>> +}
>>> +#endif
>>> +
>>> +#endif
>>>
>>
>>
>> _______________________________________________
>> lng-odp mailing list
>> lng-odp@lists.linaro.org
>> http://lists.linaro.org/mailman/listinfo/lng-odp
>>
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
>
diff mbox

Patch

diff --git a/include/helper/odp_icmp.h b/include/helper/odp_icmp.h
new file mode 100644
index 0000000..55d18a2
--- /dev/null
+++ b/include/helper/odp_icmp.h
@@ -0,0 +1,98 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:		 BSD-3-Clause
+ */
+
+
+/**
+ * @file
+ *
+ * ODP ICMP header
+ */
+
+#ifndef ODP_ICMP_H_
+#define ODP_ICMP_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <odp_align.h>
+#include <odp_debug.h>
+#include <odp_byteorder.h>
+
+/** ICMP header length */
+#define ODP_ICMPHDR_LEN 8
+
+/** ICMP header */
+typedef struct ODP_PACKED {
+	u_int8_t type;		/** message type */
+	u_int8_t code;		/** type sub-code */
+	uint16be_t chksum;
+	union {
+		struct {
+			uint16be_t id;
+			uint16be_t sequence;
+		} echo;			/** echo datagram */
+		u_int32_t gateway;	/** gateway address */
+		struct {
+			uint16be_t __unused;
+			uint16be_t mtu;
+		} frag;			/** path mtu discovery */
+	} un;
+} odp_icmphdr_t;
+
+#define ICMP_ECHOREPLY		0	/** Echo Reply			*/
+#define ICMP_DEST_UNREACH	3	/** Destination Unreachable	*/
+#define ICMP_SOURCE_QUENCH	4	/** Source Quench		*/
+#define ICMP_REDIRECT		5	/** Redirect (change route)	*/
+#define ICMP_ECHO		8	/** Echo Request			*/
+#define ICMP_TIME_EXCEEDED	11	/** Time Exceeded		*/
+#define ICMP_PARAMETERPROB	12	/** Parameter Problem		*/
+#define ICMP_TIMESTAMP		13	/** Timestamp Request		*/
+#define ICMP_TIMESTAMPREPLY	14	/** Timestamp Reply		*/
+#define ICMP_INFO_REQUEST	15	/** Information Request		*/
+#define ICMP_INFO_REPLY		16	/** Information Reply		*/
+#define ICMP_ADDRESS		17	/** Address Mask Request		*/
+#define ICMP_ADDRESSREPLY	18	/** Address Mask Reply		*/
+#define NR_ICMP_TYPES		18
+
+
+/** Codes for UNREACH. */
+#define ICMP_NET_UNREACH	0	/** Network Unreachable		*/
+#define ICMP_HOST_UNREACH	1	/** Host Unreachable		*/
+#define ICMP_PROT_UNREACH	2	/** Protocol Unreachable		*/
+#define ICMP_PORT_UNREACH	3	/** Port Unreachable		*/
+#define ICMP_FRAG_NEEDED	4	/** Fragmentation Needed/DF set	*/
+#define ICMP_SR_FAILED		5	/** Source Route failed		*/
+#define ICMP_NET_UNKNOWN	6
+#define ICMP_HOST_UNKNOWN	7
+#define ICMP_HOST_ISOLATED	8
+#define ICMP_NET_ANO		9
+#define ICMP_HOST_ANO		10
+#define ICMP_NET_UNR_TOS	11
+#define ICMP_HOST_UNR_TOS	12
+#define ICMP_PKT_FILTERED	13	/** Packet filtered */
+#define ICMP_PREC_VIOLATION	14	/** Precedence violation */
+#define ICMP_PREC_CUTOFF	15	/** Precedence cut off */
+#define NR_ICMP_UNREACH		15	/** instead of hardcoding immediate value */
+
+/** Codes for REDIRECT. */
+#define ICMP_REDIR_NET		0	/** Redirect Net			*/
+#define ICMP_REDIR_HOST		1	/** Redirect Host		*/
+#define ICMP_REDIR_NETTOS	2	/** Redirect Net for TOS		*/
+#define ICMP_REDIR_HOSTTOS	3	/** Redirect Host for TOS	*/
+
+/** Codes for TIME_EXCEEDED. */
+#define ICMP_EXC_TTL		0	/** TTL count exceeded		*/
+#define ICMP_EXC_FRAGTIME	1	/** Fragment Reass time exceeded	*/
+
+/** @internal Compile time assert */
+ODP_ASSERT(sizeof(odp_icmphdr_t) == ODP_ICMPHDR_LEN, ODP_ICMPHDR_T__SIZE_ERROR);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif