summaryrefslogtreecommitdiffstats
path: root/include/linux/dn.h
blob: 266dc0f2525c2c4ab4c8f44cdfb4daf096969849 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#ifndef _LINUX_DN_H
#define _LINUX_DN_H

/*

	DECnet Data Structures and Constants

*/

/* 
 * DNPROTO_NSP can't be the same as SOL_SOCKET, 
 * so increment each by one (compared to ULTRIX)
 */
#define DNPROTO_NSP     2                       /* NSP protocol number       */
#define DNPROTO_ROU     3                       /* Routing protocol number   */
#define DNPROTO_NML     4                       /* Net mgt protocol number   */
#define DNPROTO_EVL     5                       /* Evl protocol number (usr) */
#define DNPROTO_EVR     6                       /* Evl protocol number (evl) */
#define DNPROTO_NSPT    7                       /* NSP trace protocol number */


#define DN_ADDL		2
#define DN_MAXADDL	2 /* ULTRIX headers have 20 here, but pathworks has 2 */
#define DN_MAXOPTL	16
#define DN_MAXOBJL	16
#define DN_MAXACCL	40
#define DN_MAXALIASL	128
#define DN_MAXNODEL	256
#define DNBUFSIZE	65023

/* 
 * SET/GET Socket options  - must match the DSO_ numbers below
 */
#define SO_CONDATA      1
#define SO_CONACCESS    2
#define SO_PROXYUSR     3
#define SO_LINKINFO     7

#define DSO_CONDATA     1        /* Set/Get connect data                */
#define DSO_DISDATA     10       /* Set/Get disconnect data             */
#define DSO_CONACCESS   2        /* Set/Get connect access data         */
#define DSO_ACCEPTMODE  4        /* Set/Get accept mode                 */
#define DSO_CONACCEPT   5        /* Accept deferred connection          */
#define DSO_CONREJECT   6        /* Reject deferred connection          */
#define DSO_LINKINFO    7        /* Set/Get link information            */
#define DSO_STREAM      8        /* Set socket type to stream           */
#define DSO_SEQPACKET   9        /* Set socket type to sequenced packet */
#define DSO_MAX         10       /* Maximum option number               */


/* LINK States */
#define LL_INACTIVE	0
#define LL_CONNECTING	1
#define LL_RUNNING	2
#define LL_DISCONNECTING 3

#define ACC_IMMED 0
#define ACC_DEFER 1

#define SDF_WILD        1                  /* Wild card object          */
#define SDF_PROXY       2                  /* Addr eligible for proxy   */
#define SDF_UICPROXY    4                  /* Use uic-based proxy       */

/* Structures */


struct dn_naddr 
{
	unsigned short		a_len;
	unsigned char a_addr[DN_MAXADDL];
};

struct sockaddr_dn
{
	unsigned short		sdn_family;
	unsigned char		sdn_flags;
	unsigned char		sdn_objnum;
	unsigned short		sdn_objnamel;
	unsigned char		sdn_objname[DN_MAXOBJL];
	struct   dn_naddr	sdn_add;
};
#define sdn_nodeaddrl   sdn_add.a_len   /* Node address length  */
#define sdn_nodeaddr    sdn_add.a_addr  /* Node address         */



/*
 * DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure
 */
struct optdata_dn {
        unsigned short  opt_status;     /* Extended status return */
#define opt_sts opt_status
        unsigned short  opt_optl;       /* Length of user data    */
        unsigned char   opt_data[16];   /* User data              */
};

struct accessdata_dn
{
	unsigned char		acc_accl;
	unsigned char		acc_acc[DN_MAXACCL];
	unsigned char 		acc_passl;
	unsigned char		acc_pass[DN_MAXACCL];
	unsigned char 		acc_userl;
	unsigned char		acc_user[DN_MAXACCL];
};

/*
 * DECnet logical link information structure
 */
struct linkinfo_dn {
        unsigned short  idn_segsize;    /* Segment size for link */
        unsigned char   idn_linkstate;  /* Logical link state    */
};

/*
 * Ethernet address format (for DECnet)
 */
union etheraddress {
        unsigned char dne_addr[6];             /* Full ethernet address */
  struct {
                unsigned char dne_hiord[4];    /* DECnet HIORD prefix   */
                unsigned char dne_nodeaddr[2]; /* DECnet node address   */
  } dne_remote;
};


/*
 * DECnet physical socket address format
 */
struct dn_addr {
        unsigned short dna_family;      /* AF_DECnet               */
        union etheraddress dna_netaddr; /* DECnet ethernet address */
};

#define DECNET_IOCTL_BASE 0x89 /* PROTOPRIVATE range */

#define SIOCSNETADDR  _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
#define SIOCGNETADDR  _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)

/*
 * An unofficial structure used to set/get routes.
 * Be warned, this will probably change as the routing
 * evolves. Also this is only for use with the ioctl()
 * and the routing will use rtnetlink eventually.
 */
struct dn_fib_rtinfo {
	unsigned long flags; /* Flags */
#define DN_FIB_RTINFO_F_REPLACE 0x0001  /* Replace any existing route */
#define DN_FIB_RTINFO_F_DEVCOST 0x0002  /* Add cost of device         */
	unsigned long timeout; /* Time in seconds route should last */
	unsigned short src;  /* Source Address, 0 = any */
	unsigned short dst;  /* Destination Address     */
	unsigned short nhp;  /* Next Hop Address        */
	unsigned short hops; /* Hops on path            */
	unsigned short cost; /* Cost of path            */
	char device[16];
};

#endif /* _LINUX_DN_H */