Logo Search packages:      
Sourcecode: jnettop version File versions  Download package

ip.h

/*
 * $Header: /cvsroot/jnettop/jnettop/include/ip.h,v 1.3 2002/08/31 17:15:03 merunka Exp $
 * 
 * Copyright (c) 1982, 1986, 1993
 *    The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *    This product includes software developed by the University of
 *    California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *    @(#)ip.h    8.2 (Berkeley) 6/1/94
 */

/*
 * Definitions for internet protocol version 4.
 * Per RFC 791, September 1981.
 */
#define     IPVERSION   4

/*
 * Structure of an internet header, naked of options.
 *
 * We declare ip_len and ip_off to be short, rather than u_short
 * pragmatically since otherwise unsigned comparisons can result
 * against negative integers quite easily, and fail in subtle ways.
 */
00051 struct ip {
      guint8      ip_vhl;           /* header length, version */
#define IP_V(ip)  (((ip)->ip_vhl & 0xf0) >> 4)
#define IP_HL(ip) ((ip)->ip_vhl & 0x0f)
      guint8      ip_tos;           /* type of service */
      guint16     ip_len;           /* total length */
      guint16     ip_id;            /* identification */
      guint16     ip_off;           /* fragment offset field */
#define     IP_DF 0x4000                  /* dont fragment flag */
#define     IP_MF 0x2000                  /* more fragments flag */
#define     IP_OFFMASK 0x1fff       /* mask for fragmenting bits */
      guint8      ip_ttl;           /* time to live */
      guint8      ip_p;       /* protocol */
      guint16     ip_sum;           /* checksum */
      struct      in_addr ip_src,ip_dst;  /* source and dest address */
};

#define     IP_MAXPACKET      65535       /* maximum packet size */

/*
 * Definitions for IP type of service (ip_tos)
 */
#define     IPTOS_LOWDELAY          0x10
#define     IPTOS_THROUGHPUT  0x08
#define     IPTOS_RELIABILITY 0x04

/*
 * Definitions for IP precedence (also in ip_tos) (hopefully unused)
 */
#define     IPTOS_PREC_NETCONTROL         0xe0
#define     IPTOS_PREC_INTERNETCONTROL    0xc0
#define     IPTOS_PREC_CRITIC_ECP         0xa0
#define     IPTOS_PREC_FLASHOVERRIDE      0x80
#define     IPTOS_PREC_FLASH        0x60
#define     IPTOS_PREC_IMMEDIATE          0x40
#define     IPTOS_PREC_PRIORITY           0x20
#define     IPTOS_PREC_ROUTINE            0x00

/*
 * Definitions for options.
 */
#define     IPOPT_COPIED(o)         ((o)&0x80)
#define     IPOPT_CLASS(o)          ((o)&0x60)
#define     IPOPT_NUMBER(o)         ((o)&0x1f)

#define     IPOPT_CONTROL           0x00
#define     IPOPT_RESERVED1         0x20
#define     IPOPT_DEBMEAS           0x40
#define     IPOPT_RESERVED2         0x60

#define     IPOPT_EOL         0           /* end of option list */
#define     IPOPT_NOP         1           /* no operation */

#define     IPOPT_RR          7           /* record packet route */
#define     IPOPT_TS          68          /* timestamp */
#define     IPOPT_SECURITY          130         /* provide s,c,h,tcc */
#define     IPOPT_LSRR        131         /* loose source route */
#define     IPOPT_SATID       136         /* satnet id */
#define     IPOPT_SSRR        137         /* strict source route */

/*
 * Offsets to fields in options other than EOL and NOP.
 */
#define     IPOPT_OPTVAL            0           /* option ID */
#define     IPOPT_OLEN        1           /* option length */
#define IPOPT_OFFSET          2           /* offset within option */
#define     IPOPT_MINOFF            4           /* min value of above */

/*
 * Time stamp option structure.
 */
00122 struct      ip_timestamp {
      guint8      ipt_code;   /* IPOPT_TS */
      guint8      ipt_len;    /* size of structure (variable) */
      guint8      ipt_ptr;    /* index of current entry */
      guint8      ipt_oflwflg;      /* flags, overflow counter */
#define IPTS_OFLW(ip)   (((ipt)->ipt_oflwflg & 0xf0) >> 4)
#define IPTS_FLG(ip)    ((ipt)->ipt_oflwflg & 0x0f)
00129       union ipt_timestamp {
            guint32 ipt_time[1];
00131             struct      ipt_ta {
                  struct in_addr ipt_addr;
                  guint32 ipt_time;
            } ipt_ta[1];
      } ipt_timestamp;
};

/* flag bits for ipt_flg */
#define     IPOPT_TS_TSONLY         0           /* timestamps only */
#define     IPOPT_TS_TSANDADDR      1           /* timestamps and addresses */
#define     IPOPT_TS_PRESPEC  3           /* specified modules only */

/* bits for security (not byte swapped) */
#define     IPOPT_SECUR_UNCLASS     0x0000
#define     IPOPT_SECUR_CONFID      0xf135
#define     IPOPT_SECUR_EFTO  0x789a
#define     IPOPT_SECUR_MMMM  0xbc4d
#define     IPOPT_SECUR_RESTR 0xaf13
#define     IPOPT_SECUR_SECRET      0xd788
#define     IPOPT_SECUR_TOPSECRET   0x6bc5

/*
 * Internet implementation parameters.
 */
#define     MAXTTL            255         /* maximum time to live (seconds) */
#define     IPDEFTTL    64          /* default ttl, from RFC 1340 */
#define     IPFRAGTTL   60          /* time to live for frags, slowhz */
#define     IPTTLDEC    1           /* subtracted when forwarding */

#define     IP_MSS            576         /* default maximum segment size */

Generated by  Doxygen 1.6.0   Back to index