Diff markup
1 #ifndef _NET_DN_ROUTE_H 1 #ifndef _NET_DN_ROUTE_H
2 #define _NET_DN_ROUTE_H 2 #define _NET_DN_ROUTE_H
3 3
4 /********************************************* 4 /******************************************************************************
5 (c) 1995-1998 E.M. Serrat emserr 5 (c) 1995-1998 E.M. Serrat emserrat@geocities.com
6 6
7 This program is free software; you can red 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Publ 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either versi 9 the Free Software Foundation; either version 2 of the License, or
10 any later version. 10 any later version.
11 11
12 This program is distributed in the hope th 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULA 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more detail 15 GNU General Public License for more details.
16 ********************************************** 16 *******************************************************************************/
17 17
18 extern struct sk_buff *dn_alloc_skb(struct soc 18 extern struct sk_buff *dn_alloc_skb(struct sock *sk, int size, gfp_t pri);
19 extern int dn_route_output_sock(struct dst_ent 19 extern int dn_route_output_sock(struct dst_entry **pprt, struct flowi *, struct sock *sk, int flags);
20 extern int dn_cache_dump(struct sk_buff *skb, 20 extern int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb);
21 extern void dn_rt_cache_flush(int delay); 21 extern void dn_rt_cache_flush(int delay);
22 22
23 /* Masks for flags field */ 23 /* Masks for flags field */
24 #define DN_RT_F_PID 0x07 /* Mask for packet ty 24 #define DN_RT_F_PID 0x07 /* Mask for packet type */
25 #define DN_RT_F_PF 0x80 /* Padding Follows 25 #define DN_RT_F_PF 0x80 /* Padding Follows */
26 #define DN_RT_F_VER 0x40 /* Version =0 discard 26 #define DN_RT_F_VER 0x40 /* Version =0 discard packet if ==1 */
27 #define DN_RT_F_IE 0x20 /* Intra Ethernet, Re 27 #define DN_RT_F_IE 0x20 /* Intra Ethernet, Reserved in short pkt */
28 #define DN_RT_F_RTS 0x10 /* Packet is being re 28 #define DN_RT_F_RTS 0x10 /* Packet is being returned to sender */
29 #define DN_RT_F_RQR 0x08 /* Return packet to s 29 #define DN_RT_F_RQR 0x08 /* Return packet to sender upon non-delivery */
30 30
31 /* Mask for types of routing packets */ 31 /* Mask for types of routing packets */
32 #define DN_RT_PKT_MSK 0x06 32 #define DN_RT_PKT_MSK 0x06
33 /* Types of routing packets */ 33 /* Types of routing packets */
34 #define DN_RT_PKT_SHORT 0x02 /* Short routing 34 #define DN_RT_PKT_SHORT 0x02 /* Short routing packet */
35 #define DN_RT_PKT_LONG 0x06 /* Long routing p 35 #define DN_RT_PKT_LONG 0x06 /* Long routing packet */
36 36
37 /* Mask for control/routing selection */ 37 /* Mask for control/routing selection */
38 #define DN_RT_PKT_CNTL 0x01 /* Set to 1 if a 38 #define DN_RT_PKT_CNTL 0x01 /* Set to 1 if a control packet */
39 /* Types of control packets */ 39 /* Types of control packets */
40 #define DN_RT_CNTL_MSK 0x0f /* Mask for contr 40 #define DN_RT_CNTL_MSK 0x0f /* Mask for control packets */
41 #define DN_RT_PKT_INIT 0x01 /* Initialisation 41 #define DN_RT_PKT_INIT 0x01 /* Initialisation packet */
42 #define DN_RT_PKT_VERI 0x03 /* Verification M 42 #define DN_RT_PKT_VERI 0x03 /* Verification Message */
43 #define DN_RT_PKT_HELO 0x05 /* Hello and Test 43 #define DN_RT_PKT_HELO 0x05 /* Hello and Test Message */
44 #define DN_RT_PKT_L1RT 0x07 /* Level 1 Routin 44 #define DN_RT_PKT_L1RT 0x07 /* Level 1 Routing Message */
45 #define DN_RT_PKT_L2RT 0x09 /* Level 2 Routin 45 #define DN_RT_PKT_L2RT 0x09 /* Level 2 Routing Message */
46 #define DN_RT_PKT_ERTH 0x0b /* Ethernet Route 46 #define DN_RT_PKT_ERTH 0x0b /* Ethernet Router Hello */
47 #define DN_RT_PKT_EEDH 0x0d /* Ethernet EndNo 47 #define DN_RT_PKT_EEDH 0x0d /* Ethernet EndNode Hello */
48 48
49 /* Values for info field in hello message */ 49 /* Values for info field in hello message */
50 #define DN_RT_INFO_TYPE 0x03 /* Type mask 50 #define DN_RT_INFO_TYPE 0x03 /* Type mask */
51 #define DN_RT_INFO_L1RT 0x02 /* L1 Router 51 #define DN_RT_INFO_L1RT 0x02 /* L1 Router */
52 #define DN_RT_INFO_L2RT 0x01 /* L2 Router 52 #define DN_RT_INFO_L2RT 0x01 /* L2 Router */
53 #define DN_RT_INFO_ENDN 0x03 /* EndNode 53 #define DN_RT_INFO_ENDN 0x03 /* EndNode */
54 #define DN_RT_INFO_VERI 0x04 /* Verification R 54 #define DN_RT_INFO_VERI 0x04 /* Verification Reqd. */
55 #define DN_RT_INFO_RJCT 0x08 /* Reject Flag, R 55 #define DN_RT_INFO_RJCT 0x08 /* Reject Flag, Reserved */
56 #define DN_RT_INFO_VFLD 0x10 /* Verification F 56 #define DN_RT_INFO_VFLD 0x10 /* Verification Failed, Reserved */
57 #define DN_RT_INFO_NOML 0x20 /* No Multicast t 57 #define DN_RT_INFO_NOML 0x20 /* No Multicast traffic accepted */
58 #define DN_RT_INFO_BLKR 0x40 /* Blocking Reque 58 #define DN_RT_INFO_BLKR 0x40 /* Blocking Requested */
59 59
60 /* 60 /*
61 * The fl structure is what we used to look up 61 * The fl structure is what we used to look up the route.
62 * The rt_saddr & rt_daddr entries are the sam 62 * The rt_saddr & rt_daddr entries are the same as key.saddr & key.daddr
63 * except for local input routes, where the rt 63 * except for local input routes, where the rt_saddr = fl.fld_dst and
64 * rt_daddr = fl.fld_src to allow the route to 64 * rt_daddr = fl.fld_src to allow the route to be used for returning
65 * packets to the originating host. 65 * packets to the originating host.
66 */ 66 */
67 struct dn_route { 67 struct dn_route {
68 union { 68 union {
69 struct dst_entry dst; 69 struct dst_entry dst;
70 } u; 70 } u;
71 71
72 struct flowi fl; 72 struct flowi fl;
73 73
74 __le16 rt_saddr; 74 __le16 rt_saddr;
75 __le16 rt_daddr; 75 __le16 rt_daddr;
76 __le16 rt_gateway; 76 __le16 rt_gateway;
77 __le16 rt_local_src; /* Source used 77 __le16 rt_local_src; /* Source used for forwarding packets */
78 __le16 rt_src_map; 78 __le16 rt_src_map;
79 __le16 rt_dst_map; 79 __le16 rt_dst_map;
80 80
81 unsigned rt_flags; 81 unsigned rt_flags;
82 unsigned rt_type; 82 unsigned rt_type;
83 }; 83 };
84 84
85 extern void dn_route_init(void); 85 extern void dn_route_init(void);
86 extern void dn_route_cleanup(void); 86 extern void dn_route_cleanup(void);
87 87
88 #include <net/sock.h> 88 #include <net/sock.h>
89 #include <linux/if_arp.h> 89 #include <linux/if_arp.h>
90 90
91 static inline void dn_rt_send(struct sk_buff * 91 static inline void dn_rt_send(struct sk_buff *skb)
92 { 92 {
93 dev_queue_xmit(skb); 93 dev_queue_xmit(skb);
94 } 94 }
95 95
96 static inline void dn_rt_finish_output(struct 96 static inline void dn_rt_finish_output(struct sk_buff *skb, char *dst, char *src)
97 { 97 {
98 struct net_device *dev = skb->dev; 98 struct net_device *dev = skb->dev;
99 99
100 if ((dev->type != ARPHRD_ETHER) && (de 100 if ((dev->type != ARPHRD_ETHER) && (dev->type != ARPHRD_LOOPBACK))
101 dst = NULL; 101 dst = NULL;
102 102
103 if (dev_hard_header(skb, dev, ETH_P_DN 103 if (dev_hard_header(skb, dev, ETH_P_DNA_RT, dst, src, skb->len) >= 0)
104 dn_rt_send(skb); 104 dn_rt_send(skb);
105 else 105 else
106 kfree_skb(skb); 106 kfree_skb(skb);
107 } 107 }
108 108
109 #endif /* _NET_DN_ROUTE_H */ 109 #endif /* _NET_DN_ROUTE_H */
110 110
|
This page was automatically generated by the
LXR engine.
|