Annotation of linux/net/tcp/ip.h, revision 1.1.1.1

1.1       root        1: /* ip.h */
                      2: /*
                      3:     Copyright (C) 1992  Ross Biro
                      4: 
                      5:     This program is free software; you can redistribute it and/or modify
                      6:     it under the terms of the GNU General Public License as published by
                      7:     the Free Software Foundation; either version 2, or (at your option)
                      8:     any later version.
                      9: 
                     10:     This program is distributed in the hope that it will be useful,
                     11:     but WITHOUT ANY WARRANTY; without even the implied warranty of
                     12:     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     13:     GNU General Public License for more details.
                     14: 
                     15:     You should have received a copy of the GNU General Public License
                     16:     along with this program; if not, write to the Free Software
                     17:     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
                     18: 
                     19:     The Author may be reached as [email protected] or
                     20:     C/O Department of Mathematics; Stanford University; Stanford, CA 94305
                     21: */
                     22: #ifndef _TCP_IP_H
                     23: #define _TCP_IP_H
                     24: 
                     25: #include "dev.h"
                     26: #include <linux/sock_ioctl.h>
                     27: #include <netinet/protocols.h>
                     28: 
                     29: struct rtable
                     30: {
                     31:   unsigned long net;
                     32:   unsigned long router;
                     33:   struct device *dev;
                     34:   struct rtable *next;
                     35: };
                     36: 
                     37: struct route
                     38: {
                     39:   char route_size;
                     40:   char pointer;
                     41:   unsigned long route[MAX_ROUTE];
                     42: };
                     43: 
                     44: struct timestamp
                     45: {
                     46:   unsigned char len;
                     47:   unsigned char ptr;
                     48:   union
                     49:     {
                     50:       unsigned char flags:4, overflow:4;
                     51:       unsigned char full_char;
                     52:     } x;
                     53:   unsigned long data[9];
                     54: };
                     55: 
                     56: struct options
                     57: {
                     58:   struct route record_route;
                     59:   struct route loose_route;
                     60:   struct route strict_route;
                     61:   struct timestamp tstamp;
                     62:   unsigned short security;
                     63:   unsigned short compartment;
                     64:   unsigned short handling;
                     65:   unsigned short stream;
                     66:   unsigned tcc;
                     67: };
                     68: 
                     69: 
                     70: 
                     71: struct ip_header
                     72: {
                     73:   unsigned char ihl:4, version:4;
                     74:   unsigned char tos;
                     75:   unsigned short tot_len;
                     76:   unsigned short id;
                     77:   unsigned short frag_off;
                     78:   unsigned char ttl;
                     79:   unsigned char protocol;
                     80:   unsigned short check;
                     81:   unsigned long saddr;
                     82:   unsigned long daddr;
                     83:   /*The options start here. */
                     84: };
                     85: 
                     86: 
                     87: #define IPOPT_END 0
                     88: #define IPOPT_NOOP 1
                     89: #define IPOPT_SEC 130
                     90: #define IPOPT_LSRR 131
                     91: #define IPOPT_SSRR 137
                     92: #define IPOPT_RR 7
                     93: #define IPOPT_SID 136
                     94: #define IPOPT_TIMESTAMP 68
                     95: #define IP_LOOPBACK_ADDR 0x0100007f
                     96:  
                     97: static inline unsigned short
                     98: net16(unsigned short x)
                     99: {
                    100:   __asm__("xchgb %%cl,%%ch": "=c" (x) : "0" (x) : "cx");
                    101:   return (x);
                    102: }
                    103: 
                    104: static inline unsigned long
                    105: net32(unsigned long x)
                    106: {
                    107:   __asm__("xchgb %%cl,%%ch\n"
                    108:          "\t roll $16,%%ecx\n"
                    109:          "\t xchgb %%cl,%%ch":"=c" (x):"0"(x):"cx");
                    110:   return (x);
                    111: }
                    112: 
                    113: /* change the name of this. */
                    114: #define MAX_IP_PROTOS 32 /* Must be a power of 2 */
                    115: 
                    116: /* This is used to register protocols. */
                    117: struct ip_protocol 
                    118: {
                    119:    int (*handler) (struct sk_buff *skb, struct device *dev,
                    120:                   struct options *opt, unsigned long daddr,
                    121:                   unsigned short len, unsigned long saddr,
                    122:                   int redo, struct ip_protocol *protocol);
                    123:    void (*err_handler) (int err, unsigned char *buff, unsigned long daddr,
                    124:                        unsigned long saddr, struct ip_protocol *ipprot);
                    125:    struct ip_protocol *next;
                    126:    unsigned char protocol;
                    127:    unsigned char copy:1;
                    128:    void *data;
                    129: };
                    130: 
                    131: extern struct ip_protocol *ip_protocol_base;
                    132: extern struct ip_protocol *ip_protos[MAX_IP_PROTOS];
                    133: 
                    134: #define MAX_IP_ADDRES 5
                    135: extern unsigned long ip_addr[MAX_IP_ADDRES];
                    136: #define MY_IP_ADDR ip_addr[0];
                    137: int my_ip_addr(unsigned long);
                    138: 
                    139: #include "eth.h"
                    140: 
                    141: void
                    142: print_iph (struct ip_header *);
                    143: 
                    144: void
                    145: print_eth (struct enet_header *);
                    146: 
                    147: int ip_set_dev (struct ip_config *);
                    148: 
                    149: int ip_build_header(struct sk_buff *skb, unsigned long saddr,
                    150:                    unsigned long daddr, struct device **dev, int type,
                    151:                    struct options *opt, int len);
                    152: void ip_queue_xmit (volatile struct sock *sk, struct device *dev, 
                    153:                    struct sk_buff *skb, int free);
                    154: void ip_retransmit(volatile struct sock *sk, int all);
                    155: int ip_rcv(struct sk_buff *buff, struct device *dev, struct packet_type *);
                    156: void add_ip_protocol (struct ip_protocol *);
                    157: int delete_ip_protocol (struct ip_protocol *);
                    158: int ip_handoff (volatile struct sock *sk);
                    159: unsigned short ip_compute_csum (unsigned char *buff, int len);
                    160: int ip_addr_match (unsigned long, unsigned long);
                    161: void add_route (struct rtable *rt);
                    162: void ip_route_check (unsigned long daddr);
                    163: 
                    164: #endif
                    165: 
                    166: 
                    167: 
                    168: 
                    169: 
                    170: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.