Blame view

include/linux/if_arcnet.h 3.63 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  /*
   * INET         An implementation of the TCP/IP protocol suite for the LINUX
   *              operating system.  INET is implemented using the  BSD Socket
   *              interface as the means of communication with the user level.
   *
   *              Global definitions for the ARCnet interface.
   *
   * Authors:     David Woodhouse and Avery Pennarun
   *
   *              This program is free software; you can redistribute it and/or
   *              modify it under the terms of the GNU General Public License
   *              as published by the Free Software Foundation; either version
   *              2 of the License, or (at your option) any later version.
   */
  
  #ifndef _LINUX_IF_ARCNET_H
  #define _LINUX_IF_ARCNET_H
9adfbfb61   Arnd Bergmann   make most exporte...
18
  #include <linux/types.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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
  #include <linux/if_ether.h>
  
  
  /*
   *    These are the defined ARCnet Protocol ID's.
   */
  
  /* CAP mode */
  /* No macro but uses 1-8 */
  
  /* RFC1201 Protocol ID's */
  #define ARC_P_IP		212	/* 0xD4 */
  #define ARC_P_IPV6		196	/* 0xC4: RFC2497 */
  #define ARC_P_ARP		213	/* 0xD5 */
  #define ARC_P_RARP		214	/* 0xD6 */
  #define ARC_P_IPX		250	/* 0xFA */
  #define ARC_P_NOVELL_EC		236	/* 0xEC */
  
  /* Old RFC1051 Protocol ID's */
  #define ARC_P_IP_RFC1051	240	/* 0xF0 */
  #define ARC_P_ARP_RFC1051	241	/* 0xF1 */
  
  /* MS LanMan/WfWg "NDIS" encapsulation */
  #define ARC_P_ETHER		232	/* 0xE8 */
  
  /* Unsupported/indirectly supported protocols */
  #define ARC_P_DATAPOINT_BOOT	0	/* very old Datapoint equipment */
  #define ARC_P_DATAPOINT_MOUNT	1
  #define ARC_P_POWERLAN_BEACON	8	/* Probably ATA-Netbios related */
  #define ARC_P_POWERLAN_BEACON2	243	/* 0xF3 */
  #define ARC_P_LANSOFT		251	/* 0xFB - what is this? */
  #define ARC_P_ATALK		0xDD
  
  /* Hardware address length */
  #define ARCNET_ALEN	1
  
  /*
   * The RFC1201-specific components of an arcnet packet header.
   */
d94d9fee9   Eric Dumazet   net: cleanup incl...
58
  struct arc_rfc1201 {
9adfbfb61   Arnd Bergmann   make most exporte...
59
60
      __u8  proto;		/* protocol ID field - varies		*/
      __u8  split_flag;	/* for use with split packets		*/
701181ac1   Al Viro   arcnet endianness...
61
      __be16   sequence;		/* sequence number			*/
9adfbfb61   Arnd Bergmann   make most exporte...
62
      __u8  payload[0];	/* space remaining in packet (504 bytes)*/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
63
64
65
66
67
68
69
  };
  #define RFC1201_HDR_SIZE 4
  
  
  /*
   * The RFC1051-specific components.
   */
d94d9fee9   Eric Dumazet   net: cleanup incl...
70
  struct arc_rfc1051 {
9adfbfb61   Arnd Bergmann   make most exporte...
71
72
      __u8 proto;		/* ARC_P_RFC1051_ARP/RFC1051_IP	*/
      __u8 payload[0];		/* 507 bytes			*/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
73
74
75
76
77
78
79
80
  };
  #define RFC1051_HDR_SIZE 1
  
  
  /*
   * The ethernet-encap-specific components.  We have a real ethernet header
   * and some data.
   */
d94d9fee9   Eric Dumazet   net: cleanup incl...
81
  struct arc_eth_encap {
9adfbfb61   Arnd Bergmann   make most exporte...
82
      __u8 proto;		/* Always ARC_P_ETHER			*/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
83
      struct ethhdr eth;		/* standard ethernet header (yuck!)	*/
9adfbfb61   Arnd Bergmann   make most exporte...
84
      __u8 payload[0];		/* 493 bytes				*/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
85
86
  };
  #define ETH_ENCAP_HDR_SIZE 14
d94d9fee9   Eric Dumazet   net: cleanup incl...
87
  struct arc_cap {
9adfbfb61   Arnd Bergmann   make most exporte...
88
89
  	__u8 proto;
  	__u8 cookie[sizeof(int)];   /* Actually NOT sent over the network */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
90
  	union {
9adfbfb61   Arnd Bergmann   make most exporte...
91
92
  		__u8 ack;
  		__u8 raw[0];		/* 507 bytes */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
93
94
95
96
97
98
99
100
101
102
103
  	} mes;
  };
  
  /*
   * The data needed by the actual arcnet hardware.
   *
   * Now, in the real arcnet hardware, the third and fourth bytes are the
   * 'offset' specification instead of the length, and the soft data is at
   * the _end_ of the 512-byte buffer.  We hide this complexity inside the
   * driver.
   */
d94d9fee9   Eric Dumazet   net: cleanup incl...
104
  struct arc_hardware {
9adfbfb61   Arnd Bergmann   make most exporte...
105
      __u8  source,		/* source ARCnet - filled in automagically */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
106
107
108
109
110
111
112
113
114
               dest,		/* destination ARCnet - 0 for broadcast    */
      	     offset[2];		/* offset bytes (some weird semantics)     */
  };
  #define ARC_HDR_SIZE 4
  
  /*
   * This is an ARCnet frame header, as seen by the kernel (and userspace,
   * when you do a raw packet capture).
   */
d94d9fee9   Eric Dumazet   net: cleanup incl...
115
  struct archdr {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
116
117
118
119
120
121
122
123
124
      /* hardware requirements */
      struct arc_hardware hard;
       
      /* arcnet encapsulation-specific bits */
      union {
  	struct arc_rfc1201   rfc1201;
  	struct arc_rfc1051   rfc1051;
  	struct arc_eth_encap eth_encap;
  	struct arc_cap       cap;
9adfbfb61   Arnd Bergmann   make most exporte...
125
  	__u8 raw[0];		/* 508 bytes				*/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
126
127
128
129
      } soft;
  };
  
  #endif				/* _LINUX_IF_ARCNET_H */