summaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files/drivers/net/rtl819x/common/rtl8651_tblDrvProto.h
blob: 5b1d3628fd5bcd3acfe4773136507dc02d323cc2 (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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
/*
* Program : Protocol Header rtl8651_proto.h
* Abstract : 
* Author : Chih-Hua Huang (chhuang@realtek.com.tw)               
* $Id: rtl8651_tblDrvProto.h,v 1.1 2007-12-21 10:29:52 davidhsu Exp $
*
*  Copyright (c) 2011 Realtek Semiconductor Corp.
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License version 2 as
*  published by the Free Software Foundation.

*/

#ifndef RTL8651_TBLDRV_PROTO_H
#define RTL8651_TBLDRV_PROTO_H

#include <linux/in.h>
#include <net/rtl/rtl_types.h>

/*==========================================================================================
 * Ethernet Header for MAC ACL lookup 
 *==========================================================================================*/
#define ETHER_ADDR_LEN				6
struct	ether_header {
	uint8	ether_dhost[ETHER_ADDR_LEN];
	uint8	ether_shost[ETHER_ADDR_LEN];
	uint16	ether_type;
};

/* The number of bytes in the type field. */
#define	ETHER_TYPE_LEN		2

/* The length of the combined header. */
#define	ETHER_HDR_LEN		(ETHER_ADDR_LEN*2+ETHER_TYPE_LEN)
#define	ETHER_VLAN_HDR_LEN	(ETHER_HDR_LEN+4)


#ifndef UTILITY_H /* pktproc/utility.h also defined this structure. */
struct  ether_addr {
        uint8 octet[ETHER_ADDR_LEN];
};
#endif

typedef struct pppoeHdr_s {
  #ifdef _LITTLE_ENDIAN
	uint8	type:4, ver:4;
  #else
	uint8	ver:4, type:4;
  #endif
	uint8	code;
	uint16	sessionId, 
			length; //Length of the PPPoE payload, does not include Ethernet and PPPoE header
	uint16	proto;	//PPP protocol field
} pppoeHdr_t;

typedef struct vlanHdr_s {
#ifdef _LITTLE_ENDIAN
	uint16	vidh:4;
	uint16	cfi:1;
	uint16	priority:3;
	uint16	vidl:8;
#else
	uint16	priority:3;
	uint16	cfi:1;
	uint16	vidh:4;
	uint16	vidl:8;
#endif
	uint16	ether_type;
} vlanHdr_t;


/*==========================================================================================
 * IP Header for IP ACL lookup 
 *==========================================================================================*/
//#ifndef UTILITY_H /* pktproc/utility.h also defined this structure. */
#if !defined(_LINUX_IN_H)
struct in_addr{
	uint32    s_addr;
};

/* AF_INET Supported IP Protocols*/
#define IPPROTO_ICMP 1
#define IPPROTO_IGMP 2
#define IPPROTO_TCP	6
#define IPPROTO_UDP	17
#endif

struct ip {

#if 0 
union{
   uint8 _vhl;   /* version << 4 | header length >> 2 */
#ifdef _LITTLE_ENDIAN
	struct {
	  uint8  _hl:4,  /* header length */
	   _ver:4;	/* version */
	}s;
#else
	struct {
	  uint8 _ver:4,  /* version */
	  _hl:4;/* header length */
	}s;
#endif
 } vhl;

#define ip_vhl vhl._vhl
#define ip_hl  vhl.s._hl
#define ip_ver vhl.s._ver
#else
	/* replace bit field */
	uint8 ip_vhl;
#endif 

	uint8	ip_tos;			/* type of service */
	uint16	ip_len;			/* total length */
	uint16	ip_id;			/* identification */
	uint16	ip_off;			/* fragment offset field */
	uint8	ip_ttl;			/* time to live */
	uint8	ip_p;			/* protocol */
	uint16	ip_sum;			/* checksum */
	struct	in_addr ip_src,ip_dst;	/* source and dest address */
};
typedef struct ip ip_t;

#define	IP_RF 0x8000			/* reserved fragment flag */
#define	IP_DF 0x4000			/* dont fragment flag */
#define	IP_MF 0x2000			/* more fragments flag */
#define	IP_OFFMASK 0x1fff		/* mask for fragmenting bits */



/*==========================================================================================
 * IP Header for IP ACL lookup 
 *==========================================================================================*/
struct icmp_ra_addr {
	uint32 ira_addr;
	uint32 ira_preference;
};

struct icmp {
	uint8	icmp_type;		/* type of message, see below */
	uint8	icmp_code;		/* type sub code */
	uint16	icmp_cksum;		/* ones complement cksum of struct */
	union {
		uint8 ih_pptr;			/* ICMP_PARAMPROB */
		struct in_addr ih_gwaddr;	/* ICMP_REDIRECT */
		struct ih_idseq {
			uint16	icd_id;
			uint16	icd_seq;
		} ih_idseq;
		uint32 ih_void;

		/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
		struct ih_pmtu {
			uint16 ipm_void;
			uint16 ipm_nextmtu;
		} ih_pmtu;

		struct ih_rtradv {
			uint8 irt_num_addrs;
			uint8 irt_wpa;
			uint16 irt_lifetime;
		} ih_rtradv;
	} icmp_hun;
#define	icmp_pptr	icmp_hun.ih_pptr
#define	icmp_gwaddr	icmp_hun.ih_gwaddr
#define	icmp_id		icmp_hun.ih_idseq.icd_id
#define	icmp_seq	icmp_hun.ih_idseq.icd_seq
#define	icmp_void	icmp_hun.ih_void
#define	icmp_pmvoid	icmp_hun.ih_pmtu.ipm_void
#define	icmp_nextmtu	icmp_hun.ih_pmtu.ipm_nextmtu
#define	icmp_num_addrs	icmp_hun.ih_rtradv.irt_num_addrs
#define	icmp_wpa	icmp_hun.ih_rtradv.irt_wpa
#define	icmp_lifetime	icmp_hun.ih_rtradv.irt_lifetime
	union {
		struct id_ts {
			uint32 its_otime;
			uint32 its_rtime;
			uint32 its_ttime;
		} id_ts;
		struct id_ip  {
			struct ip idi_ip;
			/* options and then 64 bits of data */
		} id_ip;
		struct icmp_ra_addr id_radv;
		uint32 id_mask;
		int8	id_data[1];
	} icmp_dun;
#define	icmp_otime	icmp_dun.id_ts.its_otime
#define	icmp_rtime	icmp_dun.id_ts.its_rtime
#define	icmp_ttime	icmp_dun.id_ts.its_ttime
#define	icmp_ip		icmp_dun.id_ip.idi_ip
#define	icmp_radv	icmp_dun.id_radv
#define	icmp_mask	icmp_dun.id_mask
#define	icmp_data	icmp_dun.id_data
};


/*
 * Definition of type and code field values.
 */
#define	ICMP_ECHOREPLY		0		/* echo reply */
#define	ICMP_UNREACH		3		/* dest unreachable, codes: */
#define		ICMP_UNREACH_NET	0		/* bad net */
#define		ICMP_UNREACH_HOST	1		/* bad host */
#define		ICMP_UNREACH_PROTOCOL	2		/* bad protocol */
#define		ICMP_UNREACH_PORT	3		/* bad port */
#define		ICMP_UNREACH_NEEDFRAG	4		/* IP_DF caused drop */
#define		ICMP_UNREACH_SRCFAIL	5		/* src route failed */
#define		ICMP_UNREACH_NET_UNKNOWN 6		/* unknown net */
#define		ICMP_UNREACH_HOST_UNKNOWN 7		/* unknown host */
#define		ICMP_UNREACH_ISOLATED	8		/* src host isolated */
#define		ICMP_UNREACH_NET_PROHIB	9		/* prohibited access */
#define		ICMP_UNREACH_HOST_PROHIB 10		/* ditto */
#define		ICMP_UNREACH_TOSNET	11		/* bad tos for net */
#define		ICMP_UNREACH_TOSHOST	12		/* bad tos for host */
#define		ICMP_UNREACH_FILTER_PROHIB 13		/* admin prohib */
#define		ICMP_UNREACH_HOST_PRECEDENCE 14		/* host prec vio. */
#define		ICMP_UNREACH_PRECEDENCE_CUTOFF 15	/* prec cutoff */
#define	ICMP_SOURCEQUENCH	4		/* packet lost, slow down */
#define	ICMP_REDIRECT		5		/* shorter route, codes: */
#define		ICMP_REDIRECT_NET	0		/* for network */
#define		ICMP_REDIRECT_HOST	1		/* for host */
#define		ICMP_REDIRECT_TOSNET	2		/* for tos and net */
#define		ICMP_REDIRECT_TOSHOST	3		/* for tos and host */
#define	ICMP_ECHO		8		/* echo service */
#define	ICMP_ROUTERADVERT	9		/* router advertisement */
#define	ICMP_ROUTERSOLICIT	10		/* router solicitation */
#define	ICMP_TIMXCEED		11		/* time exceeded, code: */
#define		ICMP_TIMXCEED_INTRANS	0		/* ttl==0 in transit */
#define		ICMP_TIMXCEED_REASS	1		/* ttl==0 in reass */
#define	ICMP_PARAMPROB		12		/* ip header bad */
#define		ICMP_PARAMPROB_ERRATPTR 0		/* error at param ptr */
#define		ICMP_PARAMPROB_OPTABSENT 1		/* req. opt. absent */
#define		ICMP_PARAMPROB_LENGTH 2			/* bad length */
#define	ICMP_TSTAMP		13		/* timestamp request */
#define	ICMP_TSTAMPREPLY	14		/* timestamp reply */
#define	ICMP_IREQ		15		/* information request */
#define	ICMP_IREQREPLY		16		/* information reply */
#define	ICMP_MASKREQ		17		/* address mask request */
#define	ICMP_MASKREPLY		18		/* address mask reply */

#define	ICMP_MAXTYPE		18

/*==========================================================================================
 * IP Header for IP ACL lookup 
 *==========================================================================================*/
// igmp v3 group record
struct igmp_gr {
	uint8	igmp_gr_rt;				/* Record Type */
	uint8	igmp_gr_auxlen;			/* aux data length */
	uint16	igmp_gr_nofs;			/* number of sources */
	ipaddr_t	igmp_gr_group;			/* group address being reported */
	ipaddr_t	src_list;					/* first entry of src list */
	//	auxiliary data is unused now
 };
struct igmp {
	uint8		igmp_type;			/* version & type of IGMP message */
	uint8		igmp_code;			/* subtype for routing msgs */
	uint16		igmp_cksum;		/* IP-style checksum */

	union {
		struct in_addr	group;		/* group address being presented (v1/v2/v3 query) */
		struct v3_report{
			uint16			resv;	/* reserved */
			uint16			nofg;	/* number of group records */
		} v3_report;
	} grp;

	union {
		struct query {
			uint8	rsq;				/* 4bit: reserved, 1bit: suppress router-side processing, 3bit: querier's robustness variable*/
//			uint8	resv:4;			/* reserved */
//			uint8	s:1;				/* suppress router-side processing */
//			uint8	qrv:3;			/* querier's robustness variable */
			uint8	qqic;			/* querier's query interval code */
			uint16	nofs;			/* number of sources */
			ipaddr_t	src_list;			/* first entry of src list */
		} query;
		struct report {
			struct igmp_gr	gr_list;	/* first entry of group record */
		} report;
	} un_v3;

	#define	igmp_group		grp.group
	#define	igmp_qrsq		un_v3.query.rsq
//	#define	igmp_qresv		un_v3.query.resv
//	#define	igmp_qsflag		un_v3.query.s
//	#define	igmp_qrv		un_v3.query.qrv
	#define	igmp_qqic		un_v3.query.qqic
	#define	igmp_qnofs		un_v3.query.nofs
	#define	igmp_qsrclist	un_v3.query.src_list
	#define	igmp_rnofg		grp.v3_report.nofg
	#define	igmp_rresv		grp.v3_report.resv
	#define	igmp_grlist		un_v3.report.gr_list

};	

/* IGMP Type */
#define	IGMP_QUERY				0x11		/* igmp group membership query */
#define	IGMP_V1_REPORT		0x12		/* igmp v1 membership report */
#define	IGMP_DVMRP			0x13		/* DVMRP */
#define	IGMP_PIMV1				0x14		/* PIM v1 */
#define	IGMP_CISCOTRACE		0x15		/* CISCO trace messages */
#define	IGMP_V2_REPORT		0x16		/* igmp v2 membership report */
#define	IGMP_V2_LEAVE			0x17		/* igmp v2 leave group message */
#define	IGMP_MTRACE_RESPONSE	0x1e		/* multicast traceroute response */
#define	IGMP_MTRACE			0x1f		/* multicast traceroute */
#define	IGMP_V3_REPORT		0x22		/* igmp v3 membership report */
#define	IGMP_MROUTER_ADV		0x24		/* igmp multicast router advertisement */
#define	IGMP_MROUTER_SOL		0x25		/* igmp multicast router solicitation */
#define	IGMP_MROUTER_TERM	0x26		/* igmp multicast router termination */

/* IGMP v3 Group Record Type */
#define	IGMPV3_MODE_IS_INCLUDE			0x01
#define	IGMPV3_MODE_IS_EXCLUDE			0x02
#define	IGMPV3_CHANGE_TO_INCLUDE_MODE	0x03
#define	IGMPV3_CHANGE_TO_EXCLUDE_MODE	0x04
#define	IGMPV3_ALLOW_NEW_SOURCES		0x05
#define	IGMPV3_BLOCK_OLD_SOURCES		0x06

/*==========================================================================================
 * IP Header for IP ACL lookup 
 *==========================================================================================*/
typedef	uint32 tcp_seq;
struct tcphdr {
	uint16	th_sport;		/* source port */
	uint16	th_dport;		/* destination port */
	tcp_seq	th_seq;			/* sequence number */
	tcp_seq	th_ack;			/* acknowledgement number */
#if 0	
	#ifdef  _LITTLE_ENDIAN
		uint8	th_x2:4,		/* (unused) */
			th_off:4;			/* data offset */
	#else
		uint8	th_off:4,		/* data offset */
			th_x2:4;			/* (unused) */
	#endif
#else
	/* replace bit field */
	uint8  th_off_x;
	
#endif 

	uint8	th_flags;
		#define	TH_FIN	0x01
		#define	TH_SYN	0x02
		#define	TH_RST	0x04
		#define	TH_PUSH 0x08
		#define	TH_ACK	0x10
		#define	TH_URG	0x20
		#define	TH_ECE	0x40		
		#define	TH_CWR	0x80		
		#define	TH_FLAGS	(TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)

	uint16	th_win;			/* window */
	uint16	th_sum;			/* checksum */
	uint16	th_urp;			/* urgent pointer */

	//Optional TCP options. Max: 40 bytes.
	#define	TCPOPT_EOL			0
	#define	TCPOPT_NOP			1
	#define	TCPOPT_MAXSEG		2
	#define TCPOLEN_MAXSEG	4
	#define TCPOPT_WINDOW	3
	#define TCPOLEN_WINDOW	3
	#define TCPOPT_SACK_PERMITTED		4		/* Experimental */
	#define TCPOLEN_SACK_PERMITTED	2
	#define TCPOPT_SACK		5		/* Experimental */
	#define TCPOPT_TIMESTAMP	8
	#define TCPOLEN_TIMESTAMP		10
	#define TCPOLEN_TSTAMP_APPA	(TCPOLEN_TIMESTAMP+2) /* appendix A */
	#define TCPOPT_TSTAMP_HDR	\
	    (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)

	#define	TCPOPT_CC		11		/* CC options: RFC-1644 */
	#define TCPOPT_CCNEW	12
	#define TCPOPT_CCECHO	13
	#define TCPOLEN_CC		6
	#define	TCPOLEN_CC_APPA		(TCPOLEN_CC+2)
	#define	TCPOPT_CC_HDR(ccopt)		\
	    (TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC)
};


/*==========================================================================================
 * IP Header for IP ACL lookup 
 *==========================================================================================*/
struct udphdr
{
	uint16    uh_sport;				   /* source port */
	uint16    uh_dport;				   /* destination port */
	uint16    uh_ulen;				   /* udp length */
	uint16    uh_sum;				   /* udp checksum */
};

/*==========================================================================================
 * TFTP header for RRQ/WRQ
 *==========================================================================================*/

struct tftpRequest {
	uint16	opcode;
	char 	*string;
};

#define TFTP_RRQ	0x01
#define TFTP_WRQ	0x02
#define TFTP_DATA	0x03
#define TFTP_ACK	0x04
#define TFTP_ERR	0x05

/*==========================================================================================
 * AH Header 
 *==========================================================================================*/
#define AH_AUTHLEN  	12              	/* authenticator length of 96bits */
#define AH_BASIC_LEN 8      			/* basic AH header is 8 bytes, nh,hl,rv,spi and the ah_hl, says how many bytes after that to cover. */
typedef struct ahHdr_s			/* Generic AH header */
{
	uint8	ah_nh;					/* Next header (protocol) */
	uint8	ah_hl;					/* AH length, in 32-bit words */
	uint16	ah_rv;				/* reserved, must be 0 */
	uint32	ah_spi;				/* Security Parameters Index */
        uint32   ah_rpl;                 		/* Replay prevention */
	uint8	ah_data[AH_AUTHLEN];		/* Authentication hash */
} ahHdr_t;

/*==========================================================================================
 * ESP Header 
 *==========================================================================================*/
typedef struct espHdr_s
{
	uint32 spi;
	uint32 seq;
} espHdr_t;

typedef struct cbcHdr64_s
{
	uint32 iv[2];
} cbcHdr64_t;

typedef struct cbcHdr128_s
{
	uint32 iv[4];
} cbcHdr128_t;


#if 0
#define ntohs(x)	(x)
#define ntohl(x)	(x)
#define htons(x)	(x)
#define htonl(x)	(x)

#define NTOHL(d)
#define NTOHS(d)
#define HTONL(d)
#define HTONS(d)
#endif

#if !defined(_LINUX_IN_H)
/*
 * Protocols (RFC 1700)
 */
#define	IPPROTO_IP		0		/* dummy for IP */
#define	IPPROTO_HOPOPTS		0		/* IP6 hop-by-hop options */
#define	IPPROTO_ICMP		1		/* control message protocol */
#define	IPPROTO_IGMP		2		/* group mgmt protocol */
#define	IPPROTO_GGP		3		/* gateway^2 (deprecated) */
#define IPPROTO_IPV4		4 		/* IPv4 encapsulation */
#define IPPROTO_IPIP		IPPROTO_IPV4	/* for compatibility */
#define	IPPROTO_TCP		6		/* tcp */
#define	IPPROTO_ST		7		/* Stream protocol II */
#define	IPPROTO_EGP		8		/* exterior gateway protocol */
#define	IPPROTO_PIGP		9		/* private interior gateway */
#define	IPPROTO_RCCMON		10		/* BBN RCC Monitoring */
#define	IPPROTO_NVPII		11		/* network voice protocol*/
#define	IPPROTO_PUP		12		/* pup */
#define	IPPROTO_ARGUS		13		/* Argus */
#define	IPPROTO_EMCON		14		/* EMCON */
#define	IPPROTO_XNET		15		/* Cross Net Debugger */
#define	IPPROTO_CHAOS		16		/* Chaos*/
#define	IPPROTO_UDP		17		/* user datagram protocol */
#define	IPPROTO_MUX		18		/* Multiplexing */
#define	IPPROTO_MEAS		19		/* DCN Measurement Subsystems */
#define	IPPROTO_HMP		20		/* Host Monitoring */
#define	IPPROTO_PRM		21		/* Packet Radio Measurement */
#define	IPPROTO_IDP		22		/* xns idp */
#define	IPPROTO_TRUNK1		23		/* Trunk-1 */
#define	IPPROTO_TRUNK2		24		/* Trunk-2 */
#define	IPPROTO_LEAF1		25		/* Leaf-1 */
#define	IPPROTO_LEAF2		26		/* Leaf-2 */
#define	IPPROTO_RDP		27		/* Reliable Data */
#define	IPPROTO_IRTP		28		/* Reliable Transaction */
#define	IPPROTO_TP		29 		/* tp-4 w/ class negotiation */
#define	IPPROTO_BLT		30		/* Bulk Data Transfer */
#define	IPPROTO_NSP		31		/* Network Services */
#define	IPPROTO_INP		32		/* Merit Internodal */
#define	IPPROTO_SEP		33		/* Sequential Exchange */
#define	IPPROTO_3PC		34		/* Third Party Connect */
#define	IPPROTO_IDPR		35		/* InterDomain Policy Routing */
#define	IPPROTO_XTP		36		/* XTP */
#define	IPPROTO_DDP		37		/* Datagram Delivery */
#define	IPPROTO_CMTP		38		/* Control Message Transport */
#define	IPPROTO_TPXX		39		/* TP++ Transport */
#define	IPPROTO_IL		40		/* IL transport protocol */
#define	IPPROTO_IPV6		41		/* IP6 header */
#define	IPPROTO_SDRP		42		/* Source Demand Routing */
#define	IPPROTO_ROUTING		43		/* IP6 routing header */
#define	IPPROTO_FRAGMENT	44		/* IP6 fragmentation header */
#define	IPPROTO_IDRP		45		/* InterDomain Routing*/
#define	IPPROTO_RSVP		46 		/* resource reservation */
#define	IPPROTO_GRE		47		/* General Routing Encap. */
#define	IPPROTO_MHRP		48		/* Mobile Host Routing */
#define	IPPROTO_BHA		49		/* BHA */
#define	IPPROTO_ESP		50		/* IP6 Encap Sec. Payload */
#define	IPPROTO_AH		51		/* IP6 Auth Header */
#define	IPPROTO_INLSP		52		/* Integ. Net Layer Security */
#define	IPPROTO_SWIPE		53		/* IP with encryption */
#define	IPPROTO_NHRP		54		/* Next Hop Resolution */
/* 55-57: Unassigned */
#define	IPPROTO_ICMPV6		58		/* ICMP6 */
#define	IPPROTO_NONE		59		/* IP6 no next header */
#define	IPPROTO_DSTOPTS		60		/* IP6 destination option */
#define	IPPROTO_AHIP		61		/* any host internal protocol */
#define	IPPROTO_CFTP		62		/* CFTP */
#define	IPPROTO_HELLO		63		/* "hello" routing protocol */
#define	IPPROTO_SATEXPAK	64		/* SATNET/Backroom EXPAK */
#define	IPPROTO_KRYPTOLAN	65		/* Kryptolan */
#define	IPPROTO_RVD		66		/* Remote Virtual Disk */
#define	IPPROTO_IPPC		67		/* Pluribus Packet Core */
#define	IPPROTO_ADFS		68		/* Any distributed FS */
#define	IPPROTO_SATMON		69		/* Satnet Monitoring */
#define	IPPROTO_VISA		70		/* VISA Protocol */
#define	IPPROTO_IPCV		71		/* Packet Core Utility */
#define	IPPROTO_CPNX		72		/* Comp. Prot. Net. Executive */
#define	IPPROTO_CPHB		73		/* Comp. Prot. HeartBeat */
#define	IPPROTO_WSN		74		/* Wang Span Network */
#define	IPPROTO_PVP		75		/* Packet Video Protocol */
#define	IPPROTO_BRSATMON	76		/* BackRoom SATNET Monitoring */
#define	IPPROTO_ND		77		/* Sun net disk proto (temp.) */
#define	IPPROTO_WBMON		78		/* WIDEBAND Monitoring */
#define	IPPROTO_WBEXPAK		79		/* WIDEBAND EXPAK */
#define	IPPROTO_EON		80		/* ISO cnlp */
#define	IPPROTO_VMTP		81		/* VMTP */
#define	IPPROTO_SVMTP		82		/* Secure VMTP */
#define	IPPROTO_VINES		83		/* Banyon VINES */
#define	IPPROTO_TTP		84		/* TTP */
#define	IPPROTO_IGP		85		/* NSFNET-IGP */
#define	IPPROTO_DGP		86		/* dissimilar gateway prot. */
#define	IPPROTO_TCF		87		/* TCF */
#define	IPPROTO_IGRP		88		/* Cisco/GXS IGRP */
#define	IPPROTO_OSPFIGP		89		/* OSPFIGP */
#define	IPPROTO_SRPC		90		/* Strite RPC protocol */
#define	IPPROTO_LARP		91		/* Locus Address Resoloution */
#define	IPPROTO_MTP		92		/* Multicast Transport */
#define	IPPROTO_AX25		93		/* AX.25 Frames */
#define	IPPROTO_IPEIP		94		/* IP encapsulated in IP */
#define	IPPROTO_MICP		95		/* Mobile Int.ing control */
#define	IPPROTO_SCCSP		96		/* Semaphore Comm. security */
#define	IPPROTO_ETHERIP		97		/* Ethernet IP encapsulation */
#define	IPPROTO_ENCAP		98		/* encapsulation header */
#define	IPPROTO_APES		99		/* any private encr. scheme */
#define	IPPROTO_GMTP		100		/* GMTP*/
#define	IPPROTO_IPCOMP		108		/* payload compression (IPComp) */
/* 101-254: Partly Unassigned */
#define	IPPROTO_PIM		103		/* Protocol Independent Mcast */
#define	IPPROTO_PGM		113		/* PGM */
/* 255: Reserved */
/* BSD Private, local use, namespace incursion */
#define	IPPROTO_RAW		255		/* raw IP packet */
#define	IPPROTO_MAX		256

/* last return value of *_input(), meaning "all job for this pkt is done".  */
#define	IPPROTO_DONE		257
#endif

/*
 * Ports < IPPORT_RESERVED are reserved for
 * privileged processes (e.g. root).         (IP_PORTRANGE_LOW)
 * Ports > IPPORT_USERRESERVED are reserved
 * for servers, not necessarily privileged.  (IP_PORTRANGE_DEFAULT)
 */
#define	IPPORT_RESERVED		1024
#define	IPPORT_USERRESERVED	5000

#endif /* RTL8651_TBLDRV_PROTO_H */