Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
[linux-2.6] / include / linux / if_ec.h
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