Add enough code so that rsvp-te interface can be added/removed
[mpls-ldp-portable.git] / rsvpte / rsvpte_struct.h
blob1e2fd9428c8a108c1eaaa52b36d32aa29db8155b
1 /*
2 * Copyright (C) James R. Leu 2003
3 * jleu@mindspring.com
5 * This software is covered under the LGPL, for more
6 * info check out http://www.gnu.org/copyleft/lgpl.html
7 */
9 #ifndef RSVPTE_STRUCT_H
10 #define RSVPTE_STRUCT_H
12 #include "mpls_struct.h"
13 #include "mpls_list.h"
14 #include "mpls_refcnt.h"
15 #include "mpls_bitfield.h"
17 MPLS_LIST_ROOT(rsvpte_if_list, rsvpte_if);
19 typedef struct rsvpte_global {
20 struct rsvpte_if_list iff;
22 struct mpls_inet_addr lsr_identifier;
23 mpls_admin_state_enum admin_state;
25 mpls_lock_handle global_lock;
26 mpls_instance_handle user_data;
28 mpls_tree_handle addr_tree;
30 mpls_socket_handle ra_socket;
32 mpls_timer_mgr_handle timer_handle;
33 mpls_socket_mgr_handle socket_handle;
34 mpls_fib_handle fib_handle;
35 mpls_ifmgr_handle ifmgr_handle;
37 #if MPLS_USE_LSR
38 mpls_cfg_handle lsr_handle;
39 #else
40 mpls_mpls_handle mpls_handle;
41 #endif
42 } rsvpte_global;
44 typedef struct rsvpte_if {
45 MPLS_REFCNT_FIELD;
46 MPLS_LIST_ELEM(rsvpte_if) _global;
47 int label_space;
48 uint32_t index;
49 struct mpls_inet_addr local_source_address;
50 mpls_if_handle handle;
52 char name[MPLS_MAX_IF_NAME];
53 mpls_oper_state_enum oper_state;
54 mpls_admin_state_enum admin_state;
55 } rsvpte_if;
57 /**********************************************************************
58 RSVP Header
60 0 1 2 3
61 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
62 +---------------+---------------+---------------+---------------+
63 | Vers | Flags | Msg Type | RSVP Checksum |
64 +---------------+---------------+---------------+---------------+
65 | Send_TTL | (Reserved) | RSVP Length |
66 +---------------+---------------+---------------+---------------+
69 The fields in the common header are as follows:
71 Vers: 4 bits
73 Protocol version number. This is version 1.
75 Flags: 4 bits
77 0x01-0x08: Reserved
79 No flag bits are defined yet.
81 Msg Type: 8 bits
83 1 = Path
85 2 = Resv
87 3 = PathErr
89 4 = ResvErr
91 5 = PathTear
93 6 = ResvTear
95 7 = ResvConf
97 RSVP Checksum: 16 bits
99 The one's complement of the one's complement sum of the
100 message, with the checksum field replaced by zero for the
101 purpose of computing the checksum. An all-zero value
102 means that no checksum was transmitted.
104 Send_TTL: 8 bits
106 The IP TTL value with which the message was sent. See
107 Section 3.8.
109 RSVP Length: 16 bits
111 The total length of this RSVP message in bytes, including
112 the common header and the variable-length objects that
113 follow.
115 **********************************************************************/
117 typedef struct rsvpHeaderFlag_s {
118 BITFIELDS_ASCENDING_2(u_char version:4,
119 u_char flags:4);
120 } rsvpHeaderFlag_s;
122 typedef struct rsvpHeader_s {
123 union {
124 u_char mark;
125 struct rsvpHeaderFlag_s flag;
126 } flag;
127 u_char messageType;
128 u_short checksum;
129 u_char ttl;
130 u_char resserved;
131 u_short length;
132 } rsvpHeader_t;
134 /**********************************************************************
135 RSVP Objects
137 Every object consists of one or more 32-bit words with a one-
138 word header, with the following format:
140 0 1 2 3
141 +-------------+-------------+-------------+-------------+
142 | Length (bytes) | Class-Num | C-Type |
143 +-------------+-------------+-------------+-------------+
145 // (Object contents) //
147 +-------------+-------------+-------------+-------------+
149 An object header has the following fields:
151 Length
153 A 16-bit field containing the total object length in
154 bytes. Must always be a multiple of 4, and at least 4.
156 Class-Num
158 Identifies the object class; values of this field are
159 defined in Appendix A. Each object class has a name,
160 which is always capitalized in this document. An RSVP
161 implementation must recognize the following classes:
163 NULL
165 A NULL object has a Class-Num of zero, and its C-Type
166 is ignored. Its length must be at least 4, but can
167 be any multiple of 4. A NULL object may appear
168 anywhere in a sequence of objects, and its contents
169 will be ignored by the receiver.
171 SESSION
173 Contains the IP destination address (DestAddress),
174 the IP protocol id, and some form of generalized
175 destination port, to define a specific session for
176 the other objects that follow. Required in every
177 RSVP message.
179 RSVP_HOP
181 Carries the IP address of the RSVP-capable node that
182 sent this message and a logical outgoing interface
183 handle (LIH; see Section 3.3). This document refers
184 to a RSVP_HOP object as a PHOP ("previous hop")
185 object for downstream messages or as a NHOP (" next
186 hop") object for upstream messages.
188 TIME_VALUES
190 Contains the value for the refresh period R used by
191 the creator of the message; see Section 3.7.
192 Required in every Path and Resv message.
194 STYLE
196 Defines the reservation style plus style-specific
197 information that is not in FLOWSPEC or FILTER_SPEC
198 objects. Required in every Resv message.
200 FLOWSPEC
202 Defines a desired QoS, in a Resv message.
204 FILTER_SPEC
206 Defines a subset of session data packets that should
207 receive the desired QoS (specified by a FLOWSPEC
208 object), in a Resv message.
210 SENDER_TEMPLATE
212 Contains a sender IP address and perhaps some
213 additional demultiplexing information to identify a
214 sender. Required in a Path message.
216 SENDER_TSPEC
218 Defines the traffic characteristics of a sender's
219 data flow. Required in a Path message.
221 ADSPEC
223 Carries OPWA data, in a Path message.
225 ERROR_SPEC
227 Specifies an error in a PathErr, ResvErr, or a
228 confirmation in a ResvConf message.
230 POLICY_DATA
232 Carries information that will allow a local policy
233 module to decide whether an associated reservation is
234 administratively permitted. May appear in Path,
235 Resv, PathErr, or ResvErr message.
237 The use of POLICY_DATA objects is not fully specified
238 at this time; a future document will fill this gap.
240 INTEGRITY
242 Carries cryptographic data to authenticate the
243 originating node and to verify the contents of this
244 RSVP message. The use of the INTEGRITY object is
245 described in [Baker96].
247 SCOPE
249 Carries an explicit list of sender hosts towards
250 which the information in the message is to be
251 forwarded. May appear in a Resv, ResvErr, or
252 ResvTear message. See Section 3.4.
254 RESV_CONFIRM
256 Carries the IP address of a receiver that requested a
257 confirmation. May appear in a Resv or ResvConf
258 message.
264 The format of a Path message is as follows:
266 <Path Message> ::= <Common Header> [ <INTEGRITY> ]
267 <SESSION> <RSVP_HOP> <TIME_VALUES>
268 [ <EXPLICIT_ROUTE> ] <LABEL_REQUEST>
269 [ <SESSION_ATTRIBUTE> ]
270 [ <POLICY_DATA> ... ]
271 <sender descriptor>
273 <sender descriptor> ::= <SENDER_TEMPLATE> <SENDER_TSPEC>
274 [ <ADSPEC> ] [ <RECORD_ROUTE> ]
276 The Resv message format is as follows:
278 <Resv Message> ::= <Common Header> [ <INTEGRITY> ]
279 <SESSION> <RSVP_HOP> <TIME_VALUES>
280 [ <RESV_CONFIRM> ] [ <SCOPE> ]
281 [ <POLICY_DATA> ... ]
282 <STYLE> <flow descriptor list>
284 <flow descriptor list> ::= <FF flow descriptor list> | <SE flow descriptor>
286 <FF flow descriptor list> ::= <FLOWSPEC> <FILTER_SPEC> <LABEL>
287 [ <RECORD_ROUTE> ] | <FF flow descriptor list>
288 <FF flow descriptor>
290 <FF flow descriptor> ::= [ <FLOWSPEC> ] <FILTER_SPEC> <LABEL>
291 [ <RECORD_ROUTE> ]
293 <SE flow descriptor> ::= <FLOWSPEC> <SE filter spec list>
295 <SE filter spec list> ::= <SE filter spec> |
296 <SE filter spec list> <SE filter spec>
298 <SE filter spec> ::= <FILTER_SPEC> <LABEL> [ <RECORD_ROUTE> ]
300 Note: LABEL and RECORD_ROUTE (if present), are bound to the
301 preceding FILTER_SPEC. No more than one LABEL and/or
302 RECORD_ROUTE may follow each FILTER_SPEC.
304 The Path Tear message format is as follows:
306 <PathTear Message> ::= <Common Header> [ <INTEGRITY> ]
307 <SESSION> <RSVP_HOP>
308 [ <sender descriptor> ]
310 <sender descriptor> ::= (see earlier definition)
313 The Resv Tear message format is as follows:
315 <ResvTear Message> ::= <Common Header> [<INTEGRITY>]
316 <SESSION> <RSVP_HOP> [ <SCOPE> ] <STYLE>
317 <flow descriptor list>
319 <flow descriptor list> ::= (see earlier definition)
323 The Path Error message format is as follows:
325 <PathErr message> ::= <Common Header> [ <INTEGRITY> ]
326 <SESSION> <ERROR_SPEC> [ <POLICY_DATA> ...]
327 [ <sender descriptor> ]
329 <sender descriptor> ::= (see earlier definition)
332 The Resv Error message format is as follows:
334 <ResvErr Message> ::= <Common Header> [ <INTEGRITY> ]
335 <SESSION> <RSVP_HOP> <ERROR_SPEC> [ <SCOPE> ]
336 [ <POLICY_DATA> ...] <STYLE>
337 [ <error flow descriptor> ]
339 o WF Style:
340 <error flow descriptor> ::= <WF flow descriptor>
342 o FF style:
343 <error flow descriptor> ::= <FF flow descriptor>
345 o SE style:
346 <error flow descriptor> ::= <SE flow descriptor>
350 The Resv Conf message format is as follows:
352 <ResvConf message> ::= <Common Header> [ <INTEGRITY> ]
353 <SESSION> <ERROR_SPEC> <RESV_CONFIRM>
354 <STYLE> <flow descriptor list>
356 <flow descriptor list> ::= (see earlier definition)
358 **********************************************************************/
360 #define RSVP_SESSION_CLASS 1
361 #define RSVP_SESSION_CTYPE_IPV4 1
362 #define RSVP_SESSION_CTYPE_IPV6 2
364 /**********************************************************************
365 RSVP SESSION Object
367 o IPv4/UDP SESSION object: Class = 1, C-Type = 1
369 0 1 2 3
370 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
371 +---------------+---------------+---------------+---------------+
372 | IPv4 DestAddress (4 bytes) |
373 +---------------+---------------+---------------+---------------+
374 | Protocol Id | Flags | DstPort |
375 +---------------+---------------+---------------+---------------+
377 o IPv6/UDP SESSION object: Class = 1, C-Type = 2
379 0 1 2 3
380 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
381 +---------------+---------------+---------------+---------------+
385 + IPv6 DestAddress (16 bytes) +
389 +---------------+---------------+---------------+---------------+
390 | Protocol Id | Flags | DstPort |
391 +---------------+---------------+---------------+---------------+
393 DestAddress
395 The IP unicast or multicast destination address of the
396 session. This field must be non-zero.
398 Protocol Id
400 The IP Protocol Identifier for the data flow. This field
401 must be non-zero.
402 Flags
404 0x01 = E_Police flag
406 The E_Police flag is used in Path messages to determine
407 the effective "edge" of the network, to control traffic
408 policing. If the sender host is not itself capable of
409 traffic policing, it will set this bit on in Path
410 messages it sends. The first node whose RSVP is capable
411 of traffic policing will do so (if appropriate to the
412 service) and turn the flag off.
414 DstPort
416 The UDP/TCP destination port for the session. Zero may be
417 used to indicate `none'.
419 Other SESSION C-Types could be defined in the future to
420 support other demultiplexing conventions in the transport-
421 layer or application layer.
423 **********************************************************************/
425 typedef struct rsvpSession4_s {
426 u_int destAddr;
427 u_char protocolId;
428 u_char flags;
429 u_short destPort;
430 } rsvpSession4_t;
432 typedef struct rsvpSession6_s {
433 u_char destAddr[16];
434 u_char protocolId;
435 u_char flags;
436 u_short destPort;
437 } rsvpSession6_t;
440 #define RSVP_HOP_CLASS 3
441 #define RSVP_HOP_CTYPE_IPV4 1
442 #define RSVP_HOP_CTYPE_IPV6 2
444 /**********************************************************************
445 RSVP HOP Object
447 o IPv4 RSVP_HOP object: Class = 3, C-Type = 1
449 0 1 2 3
450 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
452 +---------------+---------------+---------------+---------------+
453 | IPv4 Next/Previous Hop Address |
454 +---------------+---------------+---------------+---------------+
455 | Logical Interface Handle |
456 +---------------+---------------+---------------+---------------+
458 o IPv6 RSVP_HOP object: Class = 3, C-Type = 2
460 0 1 2 3
461 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
463 +---------------+---------------+---------------+---------------+
467 + IPv6 Next/Previous Hop Address +
471 +---------------+---------------+---------------+---------------+
472 | Logical Interface Handle |
473 +---------------+---------------+---------------+---------------+
475 This object carries the IP address of the interface through which
476 the last RSVP-knowledgeable hop forwarded this message. The
477 Logical Interface Handle (LIH) is used to distinguish logical
478 outgoing interfaces, as discussed in Sections 3.3 and 3.9. A node
479 receiving an LIH in a Path message saves its value and returns it
480 in the HOP objects of subsequent Resv messages sent to the node
481 that originated the LIH. The LIH should be identically zero if
482 there is no logical interface handle.
484 **********************************************************************/
486 typedef struct rsvpHop4_s {
487 u_int hopAddr;
488 u_int logicalIfHandle;
489 } rsvpHop4_t;
491 typedef struct rsvpHop6_s {
492 u_char hopAddr[16];
493 u_int logicalIfHandle;
494 } rsvpHop6_t;
496 #define RSVP_TIME_CLASS 5
497 #define RSVP_TIME_CTYPE 1
499 /**********************************************************************
500 RSVP TIME Object
502 o TIME_VALUES Object: Class = 5, C-Type = 1
504 0 1 2 3
505 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
506 +---------------+---------------+---------------+---------------+
507 | Refresh Period R |
508 +---------------+---------------+---------------+---------------+
510 Refresh Period
512 The refresh timeout period R used to generate this message;
513 in milliseconds.
515 **********************************************************************/
517 typedef struct rsvpTime_s {
518 u_int refresh;
519 } rsvpTime_t;
521 #define RSVP_ERROR_SPEC_CLASS 6
522 #define RSVP_ERROR_SPEC_CTYPE_IPV4 1
523 #define RSVP_ERROR_SPEC_CTYPE_IPV6 2
525 /**********************************************************************
526 RSVP ERROR_SPEC Object
528 o IPv4 ERROR_SPEC object: Class = 6, C-Type = 1
530 0 1 2 3
531 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
532 +---------------+---------------+---------------+---------------+
533 | IPv4 Error Node Address (4 bytes) |
534 +---------------+---------------+---------------+---------------+
535 | Flags | Error Code | Error Value |
536 +---------------+---------------+---------------+---------------+
539 o IPv6 ERROR_SPEC object: Class = 6, C-Type = 2
541 0 1 2 3
542 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
543 +---------------+---------------+---------------+---------------+
547 + IPv6 Error Node Address (16 bytes) +
551 +---------------+---------------+---------------+---------------+
552 | Flags | Error Code | Error Value |
553 +---------------+---------------+---------------+---------------+
555 Error Node Address
557 The IP address of the node in which the error was detected.
559 Flags
561 0x01 = InPlace
563 This flag is used only for an ERROR_SPEC object in a
564 ResvErr message. If it on, this flag indicates that
565 there was, and still is, a reservation in place at the
566 failure point.
568 0x02 = NotGuilty
570 This flag is used only for an ERROR_SPEC object in a
571 ResvErr message, and it is only set in the interface to
572 the receiver application. If it on, this flag indicates
573 that the FLOWSPEC that failed was strictly greater than
574 the FLOWSPEC requested by this receiver.
576 Error Code
578 A one-octet error description.
580 Error Value
582 A two-octet field containing additional information about the
583 error. Its contents depend upon the Error Type.
585 The values for Error Code and Error Value are defined in Appendix
588 ***********************************************************************/
590 typedef struct rsvpErrorSpec4_s {
591 u_int hopAddr;
592 u_char flag;
593 u_char code;
594 u_short value;
595 } rsvpErrorSpec4_t;
597 typedef struct rsvpErrorSpec6_s {
598 u_char hopAddr[16];
599 u_char flag;
600 u_char code;
601 u_short value;
602 } rsvpErrorSpec6_t;
604 #define RSVP_SCOPE_LIST_CLASS 7
605 #define RSVP_SCOPE_LIST_CTYPE_IPV4 1
606 #define RSVP_SCOPE_LIST_CTYPE_IPV6 2
608 /***********************************************************************
610 RSVP SCOPE LIST Object
612 This object contains a list of IP addresses, used for routing
613 messages with wildcard scope without loops. The addresses must be
614 listed in ascending numerical order.
616 o IPv4 SCOPE List object: Class = 7, C-Type = 1
618 0 1 2 3
619 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
620 +-------------+-------------+-------------+-------------+
621 | IPv4 Src Address (4 bytes) |
622 +-------------+-------------+-------------+-------------+
623 // //
624 +-------------+-------------+-------------+-------------+
625 | IPv4 Src Address (4 bytes) |
626 +-------------+-------------+-------------+-------------+
629 o IPv6 SCOPE list object: Class = 7, C-Type = 2
631 0 1 2 3
632 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
633 +-------------+-------------+-------------+-------------+
637 + IPv6 Src Address (16 bytes) +
641 +-------------+-------------+-------------+-------------+
642 // //
643 +-------------+-------------+-------------+-------------+
647 + IPv6 Src Address (16 bytes) +
651 +-------------+-------------+-------------+-------------+
653 ***********************************************************************/
655 typedef struct rsvpScopeList4_s {
656 u_int addr[16];
657 } rsvpScopeList4_t;
659 typedef struct rsvpScopeList6_s {
660 u_char hopAddr[16][16];
661 } rsvpScopeList6_t;
663 #define RSVP_STYLE_CLASS 8
664 #define RSVP_STYLE_CTYPE 1
666 /***********************************************************************
668 STYLE class = 8.
670 o STYLE object: Class = 8, C-Type = 1
672 0 1 2 3
673 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
674 +-------------+-------------+-------------+-------------+
675 | Flags | Option Vector |
676 +-------------+-------------+-------------+-------------+
680 Flags: 8 bits
682 (None assigned yet)
684 Option Vector: 24 bits
686 A set of bit fields giving values for the reservation
687 options. If new options are added in the future,
688 corresponding fields in the option vector will be assigned
689 from the least-significant end. If a node does not recognize
690 a style ID, it may interpret as much of the option vector as
691 it can, ignoring new fields that may have been defined.
693 The option vector bits are assigned (from the left) as
694 follows:
696 19 bits: Reserved
698 2 bits: Sharing control
700 00b: Reserved
702 01b: Distinct reservations
704 10b: Shared reservations
706 11b: Reserved
708 3 bits: Sender selection control
710 000b: Reserved
712 001b: Wildcard
714 010b: Explicit
716 011b - 111b: Reserved
718 The low order bits of the option vector are determined by the
719 style, as follows:
721 WF 10001b
722 FF 01010b
723 SE 10010b
725 ***********************************************************************/
727 typedef struct rsvpStyleOptions_s {
728 BITFIELDS_ASCENDING_4(u_int flag:8, /* flags */
729 u_int reserved:19, /* reserved */
730 u_int shareControl:2, /* sharing control */
731 u_int senderSelectionControlres:3); /* sender selection control */
732 } rsvpStyleOptions_t;
734 typedef struct rsvpStyle_s {
735 union {
736 u_int mark;
737 struct rsvpStyleOptions_s options;
738 } flag;
739 } rsvpStyle_t;
741 #define RSVP_FILTER_SPEC_CLASS 10
742 #define RSVP_FILTER_SPEC_CTYPE_IPV4 1
743 #define RSVP_FILTER_SPEC_CTYPE_IPV6 2
744 #define RSVP_FILTER_SPEC_CTYPE_FLOWLABEL 3
746 /***********************************************************************
748 FILTER_SPEC class = 10.
750 o IPv4 FILTER_SPEC object: Class = 10, C-Type = 1
752 0 1 2 3
753 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
754 +---------------+---------------+---------------+---------------+
755 | IPv4 SrcAddress (4 bytes) |
756 +---------------+---------------+---------------+---------------+
757 | ////// | ////// | SrcPort |
758 +---------------+---------------+---------------+---------------+
761 o IPv6 FILTER_SPEC object: Class = 10, C-Type = 2
763 0 1 2 3
764 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
765 +---------------+---------------+---------------+---------------+
769 + IPv6 SrcAddress (16 bytes) +
773 +---------------+---------------+---------------+---------------+
774 | ////// | ////// | SrcPort |
775 +---------------+---------------+---------------+---------------+
778 o IPv6 Flow-label FILTER_SPEC object: Class = 10, C-Type = 3
780 0 1 2 3
781 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
782 +---------------+---------------+---------------+---------------+
786 + IPv6 SrcAddress (16 bytes) +
790 +---------------+---------------+---------------+---------------+
791 | /////// | Flow Label (24 bits) |
792 +---------------+---------------+---------------+---------------+
794 SrcAddress
796 The IP source address for a sender host. Must be non-zero.
798 SrcPort
800 The UDP/TCP source port for a sender, or zero to indicate
801 `none'.
803 Flow Label
805 A 24-bit Flow Label, defined in IPv6. This value may be used
806 by the packet classifier to efficiently identify the packets
807 belonging to a particular (sender->destination) data flow.
809 ***********************************************************************/
811 typedef struct rsvpFilterSpec4_s {
812 u_char hopAddr[16];
813 u_char reserved1;
814 u_char reserved2;
815 u_short sourcePort;
816 } rsvpFilterSpec4_t;
818 typedef struct rsvpFilterSpec6_s {
819 u_char hopAddr[16];
820 u_char reserved1;
821 u_char reserved2;
822 u_short sourcePort;
823 } rsvpFilterSpec6_t;
825 typedef struct rsvpFilterSpecFlags_s {
826 BITFIELDS_ASCENDING_2(u_int reserved:8,
827 u_int flowLabel:24);
828 } rsvpFilterSpecFlags_t;
830 typedef struct rsvpFilterSpecLabel_s {
831 u_char hopAddr[16];
832 union {
833 u_int mark;
834 struct rsvpFilterSpecFlags_s flowLabel;
835 } flag;
836 } rsvpFilterSpecLabel_t;
838 #endif /* RSVPTE_STRUCT_H */