Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #ifndef _NET_DN_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #define _NET_DN_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #include <linux/dn.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #include <net/sock.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #include <net/flow.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #include <asm/byteorder.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #include <asm/unaligned.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) struct dn_scp                                   /* Session Control Port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)         unsigned char           state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #define DN_O     1                      /* Open                 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #define DN_CR    2                      /* Connect Receive      */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #define DN_DR    3                      /* Disconnect Reject    */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #define DN_DRC   4                      /* Discon. Rej. Complete*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define DN_CC    5                      /* Connect Confirm      */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define DN_CI    6                      /* Connect Initiate     */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define DN_NR    7                      /* No resources         */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define DN_NC    8                      /* No communication     */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define DN_CD    9                      /* Connect Delivery     */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define DN_RJ    10                     /* Rejected             */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define DN_RUN   11                     /* Running              */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define DN_DI    12                     /* Disconnect Initiate  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define DN_DIC   13                     /* Disconnect Complete  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define DN_DN    14                     /* Disconnect Notificat */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define DN_CL    15                     /* Closed               */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define DN_CN    16                     /* Closed Notification  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)         __le16          addrloc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)         __le16          addrrem;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)         __u16          numdat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)         __u16          numoth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)         __u16          numoth_rcv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)         __u16          numdat_rcv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37)         __u16          ackxmt_dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38)         __u16          ackxmt_oth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39)         __u16          ackrcv_dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)         __u16          ackrcv_oth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)         __u8           flowrem_sw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	__u8           flowloc_sw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #define DN_SEND         2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define DN_DONTSEND     1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define DN_NOCHANGE     0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	__u16		flowrem_dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	__u16		flowrem_oth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	__u16		flowloc_dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	__u16		flowloc_oth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	__u8		services_rem;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	__u8		services_loc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	__u8		info_rem;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	__u8		info_loc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	__u16		segsize_rem;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	__u16		segsize_loc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	__u8		nonagle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	__u8		multi_ireq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	__u8		accept_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	unsigned long		seg_total; /* Running total of current segment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	struct optdata_dn     conndata_in;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	struct optdata_dn     conndata_out;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	struct optdata_dn     discdata_in;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	struct optdata_dn     discdata_out;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67)         struct accessdata_dn  accessdata;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)         struct sockaddr_dn addr; /* Local address  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	struct sockaddr_dn peer; /* Remote address */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	 * In this case the RTT estimation is not specified in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	 * docs, nor is any back off algorithm. Here we follow well
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	 * known tcp algorithms with a few small variations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	 * snd_window: Max number of packets we send before we wait for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	 *             an ack to come back. This will become part of a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	 *             more complicated scheme when we support flow
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	 *             control.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	 * nsp_srtt:   Round-Trip-Time (x8) in jiffies. This is a rolling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	 *             average.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	 * nsp_rttvar: Round-Trip-Time-Varience (x4) in jiffies. This is the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	 *             varience of the smoothed average (but calculated in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	 *             a simpler way than for normal statistical varience
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	 *             calculations).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	 * nsp_rxtshift: Backoff counter. Value is zero normally, each time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	 *               a packet is lost is increases by one until an ack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	 *               is received. Its used to index an array of backoff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	 *               multipliers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define NSP_MIN_WINDOW 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define NSP_MAX_WINDOW (0x07fe)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	unsigned long max_window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	unsigned long snd_window;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define NSP_INITIAL_SRTT (HZ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	unsigned long nsp_srtt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define NSP_INITIAL_RTTVAR (HZ*3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	unsigned long nsp_rttvar;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define NSP_MAXRXTSHIFT 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	unsigned long nsp_rxtshift;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	 * Output queues, one for data, one for otherdata/linkservice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	struct sk_buff_head data_xmit_queue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	struct sk_buff_head other_xmit_queue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	 * Input queue for other data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	struct sk_buff_head other_receive_queue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	int other_report;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	 * Stuff to do with the slow timer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	unsigned long stamp;          /* time of last transmit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	unsigned long persist;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	int (*persist_fxn)(struct sock *sk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	unsigned long keepalive;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	void (*keepalive_fxn)(struct sock *sk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) static inline struct dn_scp *DN_SK(struct sock *sk)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	return (struct dn_scp *)(sk + 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)  * src,dst : Source and Destination DECnet addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)  * hops : Number of hops through the network
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)  * dst_port, src_port : NSP port numbers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)  * services, info : Useful data extracted from conninit messages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)  * rt_flags : Routing flags byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)  * nsp_flags : NSP layer flags byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)  * segsize : Size of segment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)  * segnum : Number, for data, otherdata and linkservice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)  * xmit_count : Number of times we've transmitted this skb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)  * stamp : Time stamp of most recent transmission, used in RTT calculations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)  * iif: Input interface number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)  * As a general policy, this structure keeps all addresses in network
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)  * byte order, and all else in host byte order. Thus dst, src, dst_port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148)  * and src_port are in network order. All else is in host order.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)  * 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define DN_SKB_CB(skb) ((struct dn_skb_cb *)(skb)->cb)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) struct dn_skb_cb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	__le16 dst;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	__le16 src;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	__u16 hops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	__le16 dst_port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	__le16 src_port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	__u8 services;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	__u8 info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	__u8 rt_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	__u8 nsp_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	__u16 segsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	__u16 segnum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	__u16 xmit_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	unsigned long stamp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	int iif;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) static inline __le16 dn_eth2dn(unsigned char *ethaddr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	return get_unaligned((__le16 *)(ethaddr + 4));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) static inline __le16 dn_saddr2dn(struct sockaddr_dn *saddr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	return *(__le16 *)saddr->sdn_nodeaddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) static inline void dn_dn2eth(unsigned char *ethaddr, __le16 addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	__u16 a = le16_to_cpu(addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	ethaddr[0] = 0xAA;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	ethaddr[1] = 0x00;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	ethaddr[2] = 0x04;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	ethaddr[3] = 0x00;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	ethaddr[4] = (__u8)(a & 0xff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	ethaddr[5] = (__u8)(a >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) static inline void dn_sk_ports_copy(struct flowidn *fld, struct dn_scp *scp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	fld->fld_sport = scp->addrloc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	fld->fld_dport = scp->addrrem;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) unsigned int dn_mss_from_pmtu(struct net_device *dev, int mtu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) void dn_register_sysctl(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) void dn_unregister_sysctl(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #define DN_MENUVER_ACC 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define DN_MENUVER_USR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define DN_MENUVER_PRX 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define DN_MENUVER_UIC 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) struct sock *dn_sklist_find_listener(struct sockaddr_dn *addr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) struct sock *dn_find_by_skb(struct sk_buff *skb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) #define DN_ASCBUF_LEN 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) char *dn_addr2asc(__u16, char *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) int dn_destroy_timer(struct sock *sk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) int dn_sockaddr2username(struct sockaddr_dn *addr, unsigned char *buf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 			 unsigned char type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) int dn_username2sockaddr(unsigned char *data, int len, struct sockaddr_dn *addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 			 unsigned char *type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) void dn_start_slow_timer(struct sock *sk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) void dn_stop_slow_timer(struct sock *sk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) extern __le16 decnet_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) extern int decnet_debug_level;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) extern int decnet_time_wait;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) extern int decnet_dn_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) extern int decnet_di_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) extern int decnet_dr_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) extern int decnet_no_fc_max_cwnd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) extern long sysctl_decnet_mem[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) extern int sysctl_decnet_wmem[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) extern int sysctl_decnet_rmem[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) #endif /* _NET_DN_H */