OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [uClibc/] [include/] [netinet/] [ip6.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1325 phoenix
/* Copyright (C) 1991-1997, 2001 Free Software Foundation, Inc.
2
   This file is part of the GNU C Library.
3
 
4
   The GNU C Library is free software; you can redistribute it and/or
5
   modify it under the terms of the GNU Lesser General Public
6
   License as published by the Free Software Foundation; either
7
   version 2.1 of the License, or (at your option) any later version.
8
 
9
   The GNU C Library is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
   Lesser General Public License for more details.
13
 
14
   You should have received a copy of the GNU Lesser General Public
15
   License along with the GNU C Library; if not, write to the Free
16
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
   02111-1307 USA.  */
18
 
19
#ifndef _NETINET_IP6_H
20
#define _NETINET_IP6_H 1
21
 
22
#include <inttypes.h>
23
#include <netinet/in.h>
24
 
25
struct ip6_hdr
26
  {
27
    union
28
      {
29
        struct ip6_hdrctl
30
          {
31
            uint32_t ip6_un1_flow;   /* 4 bits version, 8 bits TC,
32
                                        20 bits flow-ID */
33
            uint16_t ip6_un1_plen;   /* payload length */
34
            uint8_t  ip6_un1_nxt;    /* next header */
35
            uint8_t  ip6_un1_hlim;   /* hop limit */
36
          } ip6_un1;
37
        uint8_t ip6_un2_vfc;       /* 4 bits version, top 4 bits tclass */
38
      } ip6_ctlun;
39
    struct in6_addr ip6_src;      /* source address */
40
    struct in6_addr ip6_dst;      /* destination address */
41
  };
42
 
43
#define ip6_vfc   ip6_ctlun.ip6_un2_vfc
44
#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow
45
#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen
46
#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt
47
#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim
48
#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim
49
 
50
/* Hop-by-Hop options header.  */
51
struct ip6_hbh
52
  {
53
    uint8_t  ip6h_nxt;        /* next hesder.  */
54
    uint8_t  ip6h_len;        /* length in units of 8 octets.  */
55
    /* followed by options */
56
  };
57
 
58
/* Destination options header */
59
struct ip6_dest
60
  {
61
    uint8_t  ip6d_nxt;        /* next header */
62
    uint8_t  ip6d_len;        /* length in units of 8 octets */
63
    /* followed by options */
64
  };
65
 
66
/* Routing header */
67
struct ip6_rthdr
68
  {
69
    uint8_t  ip6r_nxt;        /* next header */
70
    uint8_t  ip6r_len;        /* length in units of 8 octets */
71
    uint8_t  ip6r_type;       /* routing type */
72
    uint8_t  ip6r_segleft;    /* segments left */
73
    /* followed by routing type specific data */
74
  };
75
 
76
/* Type 0 Routing header */
77
struct ip6_rthdr0
78
  {
79
    uint8_t  ip6r0_nxt;       /* next header */
80
    uint8_t  ip6r0_len;       /* length in units of 8 octets */
81
    uint8_t  ip6r0_type;      /* always zero */
82
    uint8_t  ip6r0_segleft;   /* segments left */
83
    uint8_t  ip6r0_reserved;  /* reserved field */
84
    uint8_t  ip6r0_slmap[3];  /* strict/loose bit map */
85
    struct in6_addr  ip6r0_addr[1];  /* up to 23 addresses */
86
  };
87
 
88
/* Fragment header */
89
struct ip6_frag
90
  {
91
    uint8_t   ip6f_nxt;       /* next header */
92
    uint8_t   ip6f_reserved;  /* reserved field */
93
    uint16_t  ip6f_offlg;     /* offset, reserved, and flag */
94
    uint32_t  ip6f_ident;     /* identification */
95
  };
96
 
97
#if     BYTE_ORDER == BIG_ENDIAN
98
#define IP6F_OFF_MASK       0xfff8  /* mask out offset from _offlg */
99
#define IP6F_RESERVED_MASK  0x0006  /* reserved bits in ip6f_offlg */
100
#define IP6F_MORE_FRAG      0x0001  /* more-fragments flag */
101
#else   /* BYTE_ORDER == LITTLE_ENDIAN */
102
#define IP6F_OFF_MASK       0xf8ff  /* mask out offset from _offlg */
103
#define IP6F_RESERVED_MASK  0x0600  /* reserved bits in ip6f_offlg */
104
#define IP6F_MORE_FRAG      0x0100  /* more-fragments flag */
105
#endif
106
 
107
#endif /* netinet/ip6.h */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.