1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef _TCP_DEV_H
23 #define _TCP_DEV_H
24
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;
76
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
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