⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ospf_te.h

📁 router source code for the ospdf.
💻 H
字号:
/* * This is an implementation of draft-katz-yeung-ospf-traffic-06.txt * Copyright (C) 2001 KDD R&D Laboratories, Inc. * http://www.kddlabs.co.jp/ * * This file is part of GNU Zebra. * * GNU Zebra 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, or (at your option) any * later version. *  * GNU Zebra is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Zebra; see the file COPYING.  If not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */#ifndef _ZEBRA_OSPF_MPLS_TE_H#define _ZEBRA_OSPF_MPLS_TE_H/* * Opaque LSA's link state ID for Traffic Engineering is * structured as follows. * *        24       16        8        0 * +--------+--------+--------+--------+ * |    1   |  MBZ   |........|........| * +--------+--------+--------+--------+ * |<-Type->|<Resv'd>|<-- Instance --->| * * * Type:      IANA has assigned '1' for Traffic Engineering. * MBZ:       Reserved, must be set to zero. * Instance:  User may select an arbitrary 16-bit value. * */#define	LEGAL_TE_INSTANCE_RANGE(i)	(0 <= (i) && (i) <= 0xffff)/* *        24       16        8        0 * +--------+--------+--------+--------+ --- * |   LS age        |Options |   10   |  A * +--------+--------+--------+--------+  | * |    1   |   0    |    Instance     |  | * +--------+--------+--------+--------+  | * |        Advertising router         |  |  Standard (Opaque) LSA header; * +--------+--------+--------+--------+  |  Only type-10 is used. * |        LS sequence number         |  | * +--------+--------+--------+--------+  | * |   LS checksum   |     Length      |  V * +--------+--------+--------+--------+ --- * |      Type       |     Length      |  A * +--------+--------+--------+--------+  |  TLV part for TE; Values might be * |              Values ...           |  V  structured as a set of sub-TLVs. * +--------+--------+--------+--------+ --- *//* * Following section defines TLV (tag, length, value) structures, * used for Traffic Engineering. */struct te_tlv_header{  u_int16_t	type;			/* TE_TLV_XXX (see below) */  u_int16_t	length;			/* Value portion only, in octets */};#define TLV_HDR_SIZE \	sizeof (struct te_tlv_header)#define TLV_BODY_SIZE(tlvh) \	ROUNDUP (ntohs ((tlvh)->length), sizeof (u_int32_t))#define TLV_SIZE(tlvh) \	(TLV_HDR_SIZE + TLV_BODY_SIZE(tlvh))#define TLV_HDR_TOP(lsah) \	(struct te_tlv_header *)((char *)(lsah) + OSPF_LSA_HEADER_SIZE)#define TLV_HDR_NEXT(tlvh) \	(struct te_tlv_header *)((char *)(tlvh) + TLV_SIZE(tlvh))/* * Following section defines TLV body parts. *//* Router Address TLV *//* Mandatory */#define	TE_TLV_ROUTER_ADDR		1struct te_tlv_router_addr{  struct te_tlv_header	header;		/* Value length is 4 octets. */  struct in_addr	value;};/* Link TLV */#define	TE_TLV_LINK			2struct te_tlv_link{  struct te_tlv_header	header;  /* A set of link-sub-TLVs will follow. */};/* Link Type Sub-TLV *//* Mandatory */#define	TE_LINK_SUBTLV_LINK_TYPE		1struct te_link_subtlv_link_type{  struct te_tlv_header	header;		/* Value length is 1 octet. */  struct {#define	LINK_TYPE_SUBTLV_VALUE_PTP	1#define	LINK_TYPE_SUBTLV_VALUE_MA	2      u_char	value;      u_char	padding[3];  } link_type;};/* Link Sub-TLV: Link ID *//* Mandatory */#define	TE_LINK_SUBTLV_LINK_ID			2struct te_link_subtlv_link_id{  struct te_tlv_header	header;		/* Value length is 4 octets. */  struct in_addr	value;		/* Same as router-lsa's link-id. */};/* Link Sub-TLV: Local Interface IP Address *//* Optional */#define	TE_LINK_SUBTLV_LCLIF_IPADDR		3struct te_link_subtlv_lclif_ipaddr{  struct te_tlv_header	header;		/* Value length is 4 x N octets. */  struct in_addr	value[1];	/* Local IP address(es). */};/* Link Sub-TLV: Remote Interface IP Address *//* Optional */#define	TE_LINK_SUBTLV_RMTIF_IPADDR		4struct te_link_subtlv_rmtif_ipaddr{  struct te_tlv_header	header;		/* Value length is 4 x N octets. */  struct in_addr	value[1];	/* Neighbor's IP address(es). */};/* Link Sub-TLV: Traffic Engineering Metric *//* Optional */#define	TE_LINK_SUBTLV_TE_METRIC		5struct te_link_subtlv_te_metric{  struct te_tlv_header	header;		/* Value length is 4 octets. */  u_int32_t		value;		/* Link metric for TE purpose. */};/* Link Sub-TLV: Maximum Bandwidth *//* Optional */#define	TE_LINK_SUBTLV_MAX_BW			6struct te_link_subtlv_max_bw{  struct te_tlv_header	header;		/* Value length is 4 octets. */  float			value;		/* bytes/sec */};/* Link Sub-TLV: Maximum Reservable Bandwidth *//* Optional */#define	TE_LINK_SUBTLV_MAX_RSV_BW		7struct te_link_subtlv_max_rsv_bw{  struct te_tlv_header	header;		/* Value length is 4 octets. */  float			value;		/* bytes/sec */};/* Link Sub-TLV: Unreserved Bandwidth *//* Optional */#define	TE_LINK_SUBTLV_UNRSV_BW			8struct te_link_subtlv_unrsv_bw{  struct te_tlv_header	header;		/* Value length is 32 octets. */  float			value[8];	/* One for each priority level. */};/* Link Sub-TLV: Resource Class/Color *//* Optional */#define	TE_LINK_SUBTLV_RSC_CLSCLR		9struct te_link_subtlv_rsc_clsclr{  struct te_tlv_header	header;		/* Value length is 4 octets. */  u_int32_t		value;		/* Admin. group membership. */};/* Here are "non-official" architechtual constants. */#define MPLS_TE_MINIMUM_BANDWIDTH	1.0	/* Reasonable? *//* XXX *//* Prototypes. */extern int ospf_mpls_te_init (void);extern void ospf_mpls_te_term (void);#endif /* _ZEBRA_OSPF_MPLS_TE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -