0001
0002 #ifndef _NET_DN_H
0003 #define _NET_DN_H
0004
0005 #include <linux/dn.h>
0006 #include <net/sock.h>
0007 #include <net/flow.h>
0008 #include <asm/byteorder.h>
0009 #include <asm/unaligned.h>
0010
0011 struct dn_scp
0012 {
0013 unsigned char state;
0014 #define DN_O 1
0015 #define DN_CR 2
0016 #define DN_DR 3
0017 #define DN_DRC 4
0018 #define DN_CC 5
0019 #define DN_CI 6
0020 #define DN_NR 7
0021 #define DN_NC 8
0022 #define DN_CD 9
0023 #define DN_RJ 10
0024 #define DN_RUN 11
0025 #define DN_DI 12
0026 #define DN_DIC 13
0027 #define DN_DN 14
0028 #define DN_CL 15
0029 #define DN_CN 16
0030
0031 __le16 addrloc;
0032 __le16 addrrem;
0033 __u16 numdat;
0034 __u16 numoth;
0035 __u16 numoth_rcv;
0036 __u16 numdat_rcv;
0037 __u16 ackxmt_dat;
0038 __u16 ackxmt_oth;
0039 __u16 ackrcv_dat;
0040 __u16 ackrcv_oth;
0041 __u8 flowrem_sw;
0042 __u8 flowloc_sw;
0043 #define DN_SEND 2
0044 #define DN_DONTSEND 1
0045 #define DN_NOCHANGE 0
0046 __u16 flowrem_dat;
0047 __u16 flowrem_oth;
0048 __u16 flowloc_dat;
0049 __u16 flowloc_oth;
0050 __u8 services_rem;
0051 __u8 services_loc;
0052 __u8 info_rem;
0053 __u8 info_loc;
0054
0055 __u16 segsize_rem;
0056 __u16 segsize_loc;
0057
0058 __u8 nonagle;
0059 __u8 multi_ireq;
0060 __u8 accept_mode;
0061 unsigned long seg_total;
0062
0063 struct optdata_dn conndata_in;
0064 struct optdata_dn conndata_out;
0065 struct optdata_dn discdata_in;
0066 struct optdata_dn discdata_out;
0067 struct accessdata_dn accessdata;
0068
0069 struct sockaddr_dn addr;
0070 struct sockaddr_dn peer;
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094 #define NSP_MIN_WINDOW 1
0095 #define NSP_MAX_WINDOW (0x07fe)
0096 unsigned long max_window;
0097 unsigned long snd_window;
0098 #define NSP_INITIAL_SRTT (HZ)
0099 unsigned long nsp_srtt;
0100 #define NSP_INITIAL_RTTVAR (HZ*3)
0101 unsigned long nsp_rttvar;
0102 #define NSP_MAXRXTSHIFT 12
0103 unsigned long nsp_rxtshift;
0104
0105
0106
0107
0108 struct sk_buff_head data_xmit_queue;
0109 struct sk_buff_head other_xmit_queue;
0110
0111
0112
0113
0114 struct sk_buff_head other_receive_queue;
0115 int other_report;
0116
0117
0118
0119
0120 unsigned long stamp;
0121 unsigned long persist;
0122 int (*persist_fxn)(struct sock *sk);
0123 unsigned long keepalive;
0124 void (*keepalive_fxn)(struct sock *sk);
0125
0126 };
0127
0128 static inline struct dn_scp *DN_SK(struct sock *sk)
0129 {
0130 return (struct dn_scp *)(sk + 1);
0131 }
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151 #define DN_SKB_CB(skb) ((struct dn_skb_cb *)(skb)->cb)
0152 struct dn_skb_cb {
0153 __le16 dst;
0154 __le16 src;
0155 __u16 hops;
0156 __le16 dst_port;
0157 __le16 src_port;
0158 __u8 services;
0159 __u8 info;
0160 __u8 rt_flags;
0161 __u8 nsp_flags;
0162 __u16 segsize;
0163 __u16 segnum;
0164 __u16 xmit_count;
0165 unsigned long stamp;
0166 int iif;
0167 };
0168
0169 static inline __le16 dn_eth2dn(const unsigned char *ethaddr)
0170 {
0171 return get_unaligned((__le16 *)(ethaddr + 4));
0172 }
0173
0174 static inline __le16 dn_saddr2dn(struct sockaddr_dn *saddr)
0175 {
0176 return *(__le16 *)saddr->sdn_nodeaddr;
0177 }
0178
0179 static inline void dn_dn2eth(unsigned char *ethaddr, __le16 addr)
0180 {
0181 __u16 a = le16_to_cpu(addr);
0182 ethaddr[0] = 0xAA;
0183 ethaddr[1] = 0x00;
0184 ethaddr[2] = 0x04;
0185 ethaddr[3] = 0x00;
0186 ethaddr[4] = (__u8)(a & 0xff);
0187 ethaddr[5] = (__u8)(a >> 8);
0188 }
0189
0190 static inline void dn_sk_ports_copy(struct flowidn *fld, struct dn_scp *scp)
0191 {
0192 fld->fld_sport = scp->addrloc;
0193 fld->fld_dport = scp->addrrem;
0194 }
0195
0196 unsigned int dn_mss_from_pmtu(struct net_device *dev, int mtu);
0197 void dn_register_sysctl(void);
0198 void dn_unregister_sysctl(void);
0199
0200 #define DN_MENUVER_ACC 0x01
0201 #define DN_MENUVER_USR 0x02
0202 #define DN_MENUVER_PRX 0x04
0203 #define DN_MENUVER_UIC 0x08
0204
0205 struct sock *dn_sklist_find_listener(struct sockaddr_dn *addr);
0206 struct sock *dn_find_by_skb(struct sk_buff *skb);
0207 #define DN_ASCBUF_LEN 9
0208 char *dn_addr2asc(__u16, char *);
0209 int dn_destroy_timer(struct sock *sk);
0210
0211 int dn_sockaddr2username(struct sockaddr_dn *addr, unsigned char *buf,
0212 unsigned char type);
0213 int dn_username2sockaddr(unsigned char *data, int len, struct sockaddr_dn *addr,
0214 unsigned char *type);
0215
0216 void dn_start_slow_timer(struct sock *sk);
0217 void dn_stop_slow_timer(struct sock *sk);
0218
0219 extern __le16 decnet_address;
0220 extern int decnet_debug_level;
0221 extern int decnet_time_wait;
0222 extern int decnet_dn_count;
0223 extern int decnet_di_count;
0224 extern int decnet_dr_count;
0225 extern int decnet_no_fc_max_cwnd;
0226
0227 extern long sysctl_decnet_mem[3];
0228 extern int sysctl_decnet_wmem[3];
0229 extern int sysctl_decnet_rmem[3];
0230
0231 #endif