root/net/tcp/dev.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /* dev.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 bir7@leland.stanford.edu or
  20     C/O Department of Mathematics; Stanford University; Stanford, CA 94305
  21 */
  22 #ifndef _TCP_DEV_H
  23 #define _TCP_DEV_H
  24 /* for future expansion when we will have different priorities. */
  25 #define DEV_NUMBUFFS 3
  26 #define MAX_ADDR_LEN 6
  27 #define MAX_HEADER 14
  28 #define MAX_ROUTE 16
  29 
  30 struct device
  31 {
  32   char *name;
  33   unsigned long rmem_end;
  34   unsigned long rmem_start;
  35   unsigned long mem_end;
  36   unsigned long mem_start;
  37   unsigned short base_addr;
  38   unsigned char irq;
  39   unsigned char start:1,
  40                 tbusy:1,
  41                 loopback:1,
  42                 interrupt:1,
  43                 up:1;
  44   struct device *next;
  45   void (*init)(struct device *dev);
  46   unsigned long trans_start;
  47   struct sk_buff *buffs[DEV_NUMBUFFS];
  48   struct sk_buff *backlog;
  49   int  (*open)(struct device *dev);
  50   int  (*stop)(struct device *dev);
  51   int (*hard_start_xmit) (struct sk_buff *skb, struct device *dev);
  52   int (*hard_header) (unsigned char *buff, struct device *dev,
  53                       unsigned short type, unsigned long daddr,
  54                       unsigned long saddr, unsigned len);
  55   void (*add_arp) (unsigned long addr, struct sk_buff *skb,
  56                    struct device *dev);
  57   void (*queue_xmit)(struct sk_buff *skb, struct device *dev, int pri);
  58   int (*rebuild_header)(void *eth, struct device *dev);
  59   unsigned short (*type_trans) (struct sk_buff *skb, struct device *dev);
  60   void (*send_packet)(struct sk_buff *skb, struct device *dev);
  61   void *private;
  62 
  63   unsigned short type;
  64   unsigned short hard_header_len;
  65   unsigned short mtu;
  66   unsigned char broadcast[MAX_ADDR_LEN];
  67   unsigned char dev_addr[MAX_ADDR_LEN];
  68   unsigned char addr_len;
  69 };
  70 
  71 extern struct device *dev_base;
  72 
  73 struct packet_type
  74 {
  75    unsigned short type; /* This is really NET16(ether_type) other devices
  76                            will have to translate appropriately. */
  77    unsigned short copy:1;
  78    int (*func) (struct sk_buff *, struct device *, struct packet_type *);
  79    void *data;
  80    struct packet_type *next;
  81 };
  82 
  83 /* used by dev_rint */
  84 #define IN_SKBUFF 1
  85 
  86 extern struct packet_type *ptype_base;
  87 void dev_queue_xmit (struct sk_buff *skb, struct device *dev, int pri);
  88 int dev_rint (unsigned char *buff, unsigned long len, int flags,
  89               struct device *dev);
  90 unsigned long dev_tint (unsigned char *buff, struct device *dev);
  91 void dev_add_pack (struct packet_type *pt);
  92 void dev_remove_pack (struct packet_type *pt);
  93 struct device *get_dev (char *name);
  94 
  95 
  96 #endif

/* [previous][next][first][last][top][bottom][index][help] */