1: /*
   2:  * Copyright (c) 1982, 1986 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  *
   6:  *	@(#)ip.h	7.1 (Berkeley) 6/5/86
   7:  */
   8: 
   9: /*
  10:  * Definitions for internet protocol version 4.
  11:  * Per RFC 791, September 1981.
  12:  */
  13: #define IPVERSION   4
  14: 
  15: /*
  16:  * Structure of an internet header, naked of options.
  17:  *
  18:  * We declare ip_len and ip_off to be short, rather than u_short
  19:  * pragmatically since otherwise unsigned comparisons can result
  20:  * against negative integers quite easily, and fail in subtle ways.
  21:  */
  22: struct ip {
  23: #ifdef vax
  24:     u_char  ip_hl:4,        /* header length */
  25:         ip_v:4;         /* version */
  26: #endif
  27:     u_char  ip_tos;         /* type of service */
  28:     short   ip_len;         /* total length */
  29:     u_short ip_id;          /* identification */
  30:     short   ip_off;         /* fragment offset field */
  31: #define IP_DF 0x4000            /* dont fragment flag */
  32: #define IP_MF 0x2000            /* more fragments flag */
  33:     u_char  ip_ttl;         /* time to live */
  34:     u_char  ip_p;           /* protocol */
  35:     u_short ip_sum;         /* checksum */
  36:     struct  in_addr ip_src,ip_dst;  /* source and dest address */
  37: };
  38: 
  39: /*
  40:  * Definitions for options.
  41:  */
  42: #define IPOPT_COPIED(o)     ((o)&0x80)
  43: #define IPOPT_CLASS(o)      ((o)&0x60)
  44: #define IPOPT_NUMBER(o)     ((o)&0x1f)
  45: 
  46: #define IPOPT_CONTROL       0x00
  47: #define IPOPT_RESERVED1     0x20
  48: #define IPOPT_DEBMEAS       0x40
  49: #define IPOPT_RESERVED2     0x60
  50: 
  51: #define IPOPT_EOL       0       /* end of option list */
  52: #define IPOPT_NOP       1       /* no operation */
  53: 
  54: #define IPOPT_RR        7       /* record packet route */
  55: #define IPOPT_TS        68      /* timestamp */
  56: #define IPOPT_SECURITY      130     /* provide s,c,h,tcc */
  57: #define IPOPT_LSRR      131     /* loose source route */
  58: #define IPOPT_SATID     136     /* satnet id */
  59: #define IPOPT_SSRR      137     /* strict source route */
  60: 
  61: /*
  62:  * Offsets to fields in options other than EOL and NOP.
  63:  */
  64: #define IPOPT_OPTVAL        0       /* option ID */
  65: #define IPOPT_OLEN      1       /* option length */
  66: #define IPOPT_OFFSET        2       /* offset within option */
  67: #define IPOPT_MINOFF        4       /* min value of above */
  68: 
  69: /*
  70:  * Time stamp option structure.
  71:  */
  72: struct  ip_timestamp {
  73:     u_char  ipt_code;       /* IPOPT_TS */
  74:     u_char  ipt_len;        /* size of structure (variable) */
  75:     u_char  ipt_ptr;        /* index of current entry */
  76:     u_char  ipt_flg:4,      /* flags, see below */
  77:         ipt_oflw:4;     /* overflow counter */
  78:     union {
  79:         n_long  ipt_time[1];
  80:         struct  ipt_ta {
  81:             struct in_addr ipt_addr;
  82:             n_long ipt_time;
  83:         } ipt_ta[1];
  84:     }
  85: };
  86: 
  87: /* flag bits for ipt_flg */
  88: #define IPOPT_TS_TSONLY     0       /* timestamps only */
  89: #define IPOPT_TS_TSANDADDR  1       /* timestamps and addresses */
  90: #define IPOPT_TS_PRESPEC    2       /* specified modules only */
  91: 
  92: /* bits for security (not byte swapped) */
  93: #define IPOPT_SECUR_UNCLASS 0x0000
  94: #define IPOPT_SECUR_CONFID  0xf135
  95: #define IPOPT_SECUR_EFTO    0x789a
  96: #define IPOPT_SECUR_MMMM    0xbc4d
  97: #define IPOPT_SECUR_RESTR   0xaf13
  98: #define IPOPT_SECUR_SECRET  0xd788
  99: #define IPOPT_SECUR_TOPSECRET   0x6bc5
 100: 
 101: /*
 102:  * Internet implementation parameters.
 103:  */
 104: #define MAXTTL      255     /* maximum time to live (seconds) */
 105: #define IPFRAGTTL   15      /* time to live for frag chains */
 106: #define IPTTLDEC    1       /* subtracted when forwarding */
 107: 
 108: #define IP_MSS      576     /* default maximum segment size */

Defined struct's

ip defined in line 22; used 236 times
ip_timestamp defined in line 72; used 4 times
ipt_ta defined in line 80; never used

Defined macros

IPFRAGTTL defined in line 105; used 1 times
IPOPT_CLASS defined in line 43; never used
IPOPT_CONTROL defined in line 46; never used
IPOPT_COPIED defined in line 42; used 1 times
IPOPT_DEBMEAS defined in line 48; never used
IPOPT_LSRR defined in line 57; never used
IPOPT_NUMBER defined in line 44; never used
IPOPT_OFFSET defined in line 66; used 15 times
IPOPT_OLEN defined in line 65; used 7 times
IPOPT_RESERVED1 defined in line 47; never used
IPOPT_RESERVED2 defined in line 49; never used
IPOPT_RR defined in line 54; never used
IPOPT_SATID defined in line 58; never used
IPOPT_SECURITY defined in line 56; never used
IPOPT_SECUR_CONFID defined in line 94; never used
IPOPT_SECUR_EFTO defined in line 95; never used
IPOPT_SECUR_MMMM defined in line 96; never used
IPOPT_SECUR_RESTR defined in line 97; never used
IPOPT_SECUR_SECRET defined in line 98; never used
IPOPT_SECUR_TOPSECRET defined in line 99; never used
IPOPT_SECUR_UNCLASS defined in line 93; never used
IPOPT_SSRR defined in line 59; used 2 times
IPOPT_TS defined in line 55; never used
IPOPT_TS_PRESPEC defined in line 90; never used
IPOPT_TS_TSANDADDR defined in line 89; never used
IPOPT_TS_TSONLY defined in line 88; never used
IPTTLDEC defined in line 106; used 2 times
IPVERSION defined in line 13; used 1 times
IP_DF defined in line 31; used 3 times
IP_MSS defined in line 108; used 1 times
MAXTTL defined in line 104; used 2 times

Usage of this include

Last modified: 1986-06-05
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1251
Valid CSS Valid XHTML 1.0 Strict