/******************************************************************************* ** ** Cabletron Systems Incorporated ** Post Office Box 5005 ** Rochester, NH 03866-5005 ** (c) Copyright Cabletron Systems Inc. 1999 ** ** Workfile: %M% ** Logfile: %P% ** Original Author: Todd Crowley ** SCCS Delta ID: %I% ** Last Delta Date/Time: %G% %U% ** *******************************************************************************/ #ifndef LFAPFAR_H_ #define LFAPFAR_H_ #include "Lfap.h" #include "LfapMsg.h" #ifdef __cplusplus extern "C" { #endif #define LFAP_IN_LABEL 1 #define LFAP_OUT_LABEL 0 #define LFAP_FAR_INVALID 0 #define LFAP_FAR_VALID 1 #define LFAP_FAR_FLOW_ID 1 #define LFAP_FAR_TIME 1 #define LFAP_FAR_SRC_ADDR 2 #define LFAP_FAR_DEST_ADDR 4 #define LFAP_FAR_SRC_PORT 8 #define LFAP_FAR_PROTOCOL_ID 16 #define LFAP_FAR_COS 32 #define LFAP_FAR_CLIENT_DATA 64 #define LFAP_FAR_SOURCE_CCE_ADDR 128 #define LFAP_FAR_QUALIFIER 256 #define LFAP_FAR_SRC_AS 512 #define LFAP_FAR_INGRESS_PORT 1024 #define LFAP_FAR_EGRESS_PORT 2048 #define LFAP_FAR_VLAN_ID 4096 #define LFAP_FAR_CLASS_OF_SERVICE 8192 #define LFAP_FAR_IN_MPLS_LABEL 16384 #define LFAP_FAR_OUT_MPLS_LABEL 32768 #define LFAP_FAR_NEXT_HOP_ADDR 65536 #define LFAP_FAR_DEST_AS 131072 #define LFAP_FAR_LDP_FEC 262144 #define LFAP_MAX_PROTOCOL_LIST 4 #define LFAP_MAX_LABELS 4 #define LFAP_MAX_FECs 1 typedef struct lfap_far_msg { LFAPBuffer lfap_msg; LFAPHeader hdr; LFAPIE flow_id; LFAPIE time; LFAPIE src_addr; LFAPIE dest_addr; LFAPIE src_port; LFAPIE protocol; lfapui8_t protocolListCnt; lfapui32_t protocolList[LFAP_MAX_PROTOCOL_LIST]; #define LFAP_PROTOCOL_L1 0 #define LFAP_PROTOCOL_L2 1 #define LFAP_PROTOCOL_L3 2 #define LFAP_PROTOCOL_L4 3 #define LFAP_ETHER 0x1 #define LFAP_IP 0x800 #define LFAP_MPLS 0x8847 LFAPIE client_data; LFAPIE src_cce_addr; LFAPIE qualifier; LFAPIE src_AS; LFAPIE ingress_port; LFAPIE egress_port; LFAPIE vlan_id; lfapui8_t inLabelCount; lfapui8_t outLabelCount; LFAPIE inMplsLabel[LFAP_MAX_LABELS]; LFAPIE outMplsLabel[LFAP_MAX_LABELS]; lfapui8_t fecCount; LFAPIE ldpFEC[LFAP_MAX_FECs]; LFAPIE CoS_Arr[LFAP_COS_MAX_TYPES+1][LFAP_COS_RT+1]; /* Array is 1 based */ LFAPIE next_hop_addr; LFAPIE dest_AS; char cxn_priority[LFAP_UINT32_SIZE]; char checkpoint[LFAP_UINT32_SIZE]; /* lfapui32_t dest_port; */ } LFAP_FAR; void resetLfapFAR (LFAP_FAR* lfap_far); void initLfapFAR (LFAP_FAR* lfap_far); void initLfapFARflowId (LFAP_FAR* lfap_far, lfapui32_t fas_id_hi, lfapui32_t fas_id_lo, lfapui32_t cce_id); int initRcvdLfapFAR (LFAP_FAR* lfap_far, void* buf, int buf_len); int setComponentLfapFAR (LFAP_FAR* lfap_far, LFAPIE* ie); void setFlowIdLfapFAR (LFAP_FAR* lfap_far, lfapui32_t fas_id_hi, lfapui32_t fas_id_lo, lfapui32_t cce_id); void setTimeLfapFAR (LFAP_FAR* lfap_far, lfapui32_t time); void setSrcAddrLfapFAR (LFAP_FAR* lfap_far, char* addr, lfapui16_t family, lfapui16_t len); void setDestAddrLfapFAR (LFAP_FAR* lfap_far, char* addr, lfapui16_t family, lfapui16_t len); void setSrcPortLfapFAR (LFAP_FAR* lfap_far, lfapui16_t type, lfapui16_t port); void setProtocolLfapFAR (LFAP_FAR* lfap_far, char* protocol, lfapui16_t len); void setClientDataLfapFAR (LFAP_FAR* lfap_far, char* data, lfapui16_t len); void setSrcCCEAddrLfapFAR (LFAP_FAR* lfap_far, char* addr, lfapui16_t family, lfapui16_t len); void setSrcASLfapFAR (LFAP_FAR* lfap_far, lfapui32_t src_as); void setDestASLfapFAR (LFAP_FAR* lfap_far, lfapui32_t dest_as); void setVlanIDLfapFAR (LFAP_FAR* lfap_far, lfapui16_t src_vlan_id, lfapui16_t dst_vlan_id); void setMplsLabelLfapFAR (LFAP_FAR* lfap_far, lfapui8_t in, lfapui32_t label); void setLDPFECLfapFAR (LFAP_FAR* lfap_far, lfapui8_t* ldpFEC, lfapui16_t len); void setCoSLfapFAR(LFAP_FAR* lfap_far, CoS_Types_t type, CoS_Types_t rt, lfapui32_t val); void setIngressPortLfapFAR (LFAP_FAR* lfap_far, lfapui32_t ingress_port); void setEgressPortLfapFAR (LFAP_FAR* lfap_far, lfapui32_t egress_port); void setCheckpointLfapFAR (LFAP_FAR* lfap_far, lfapui32_t checkpoint); void setCxnPriorityLfapFAR (LFAP_FAR* lfap_far, lfapui32_t cxn_priority); void setNextHopAddrLfapFAR (LFAP_FAR* lfap_far, char* addr, lfapui16_t family, lfapui16_t len); int encodeCompletedLfapFAR (LFAP_FAR* lfap_far); lfapui32_t verifyLfapFAR (LFAP_FAR* lfap_far); /* Convenience routines */ lfapui32_t getDestPortLfapFAR (LFAP_FAR* lfap_far, lfapui16_t *port); lfapui32_t getIPprotocolLfapFAR (LFAP_FAR* lfap_far, lfapui8_t *proto); lfapui32_t getFlowTypeLfapFAR (LFAP_FAR* lfap_far, lfapui32_t *type); #ifdef __cplusplus } #endif #endif /* LFAPFAR_H_ */