|
1 /* Definitions for Econet sockets. */ |
|
2 |
|
3 #ifndef __LINUX_IF_EC |
|
4 #define __LINUX_IF_EC |
|
5 |
|
6 /* User visible stuff. Glibc provides its own but libc5 folk will use these */ |
|
7 |
|
8 struct ec_addr |
|
9 { |
|
10 unsigned char station; /* Station number. */ |
|
11 unsigned char net; /* Network number. */ |
|
12 }; |
|
13 |
|
14 struct sockaddr_ec |
|
15 { |
|
16 unsigned short sec_family; |
|
17 unsigned char port; /* Port number. */ |
|
18 unsigned char cb; /* Control/flag byte. */ |
|
19 unsigned char type; /* Type of message. */ |
|
20 struct ec_addr addr; |
|
21 unsigned long cookie; |
|
22 }; |
|
23 |
|
24 #define ECTYPE_PACKET_RECEIVED 0 /* Packet received */ |
|
25 #define ECTYPE_TRANSMIT_STATUS 0x10 /* Transmit completed, |
|
26 low nibble holds status */ |
|
27 |
|
28 #define ECTYPE_TRANSMIT_OK 1 |
|
29 #define ECTYPE_TRANSMIT_NOT_LISTENING 2 |
|
30 #define ECTYPE_TRANSMIT_NET_ERROR 3 |
|
31 #define ECTYPE_TRANSMIT_NO_CLOCK 4 |
|
32 #define ECTYPE_TRANSMIT_LINE_JAMMED 5 |
|
33 #define ECTYPE_TRANSMIT_NOT_PRESENT 6 |
|
34 |
|
35 #ifdef __KERNEL__ |
|
36 |
|
37 #define EC_HLEN 6 |
|
38 |
|
39 /* This is what an Econet frame looks like on the wire. */ |
|
40 struct ec_framehdr |
|
41 { |
|
42 unsigned char dst_stn; |
|
43 unsigned char dst_net; |
|
44 unsigned char src_stn; |
|
45 unsigned char src_net; |
|
46 unsigned char cb; |
|
47 unsigned char port; |
|
48 }; |
|
49 |
|
50 struct econet_sock { |
|
51 /* struct sock has to be the first member of econet_sock */ |
|
52 struct sock sk; |
|
53 unsigned char cb; |
|
54 unsigned char port; |
|
55 unsigned char station; |
|
56 unsigned char net; |
|
57 unsigned short num; |
|
58 }; |
|
59 |
|
60 static inline struct econet_sock *ec_sk(const struct sock *sk) |
|
61 { |
|
62 return (struct econet_sock *)sk; |
|
63 } |
|
64 |
|
65 struct ec_device |
|
66 { |
|
67 unsigned char station, net; /* Econet protocol address */ |
|
68 }; |
|
69 |
|
70 #endif |
|
71 |
|
72 #endif |