Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* ICMP for IP v4 and v6 */
enum
{
        /* Packet Types, icmp v4 (rfc 792) */
        EchoReply       = 0,
        Unreachable     = 3,
        SrcQuench       = 4,
        Redirect        = 5,
        EchoRequest     = 8,
        TimeExceed      = 11,
        InParmProblem   = 12,
        Timestamp       = 13,
        TimestampReply  = 14,
        InfoRequest     = 15,
        InfoReply       = 16,
        AddrMaskRequest = 17,
        AddrMaskReply   = 18,
        Traceroute      = 30,
        IPv6WhereAreYou = 33,
        IPv6IAmHere     = 34,

        /* packet types, icmp v6 (rfc 2463) */

        /* error messages */
        UnreachableV6   = 1,
        PacketTooBigV6  = 2,
        TimeExceedV6    = 3,
        ParamProblemV6  = 4,

        /* informational messages (rfc 2461 also) */
        EchoRequestV6   = 128,
        EchoReplyV6     = 129,
        RouterSolicit   = 133,
        RouterAdvert    = 134,
        NbrSolicit      = 135,
        NbrAdvert       = 136,
        RedirectV6      = 137,

        Maxtype6        = 137,

        ICMP_HDRSIZE    = 8,
};

typedef struct Ip4hdr Ip4hdr;
struct Ip4hdr
{
        uchar   vihl;           /* Version and header length */
        uchar   tos;            /* Type of service */
        uchar   length[2];      /* packet length */
        uchar   id[2];          /* Identification */
        uchar   frag[2];        /* Fragment information */
        uchar   ttl;            /* Time to live */
        uchar   proto;          /* Protocol */
        uchar   ipcksum[2];     /* Header checksum */
        uchar   src[4];         /* Ipv4 source */
        uchar   dst[4];         /* Ipv4 destination */

        uchar   data[];
};

// #define IP4HDRSZ offsetof(Ip4hdr, data[0])

/* the icmp payload has the same format in v4 and v6 */
typedef struct Icmphdr Icmphdr;
struct Icmphdr {
        uchar   type;
        uchar   code;
        uchar   cksum[2];
        uchar   icmpid[2];
        uchar   seq[2];
        uchar   data[];
};

// #define ICMPHDRSZ offsetof(Icmphdr, data[0])

Generated by GNU Enscript 1.6.6.