Line data Source code
1 : /* 2 : * vr_mpls.h -- 3 : * 4 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 5 : */ 6 : #ifndef __VR_MPLS_H__ 7 : #define __VR_MPLS_H__ 8 : 9 : #include "vr_types.h" 10 : 11 : #define VR_MPLS_LABEL_SHIFT 12 12 : #define VR_MPLS_EXP_QOS_SHIFT 9 13 : #define VR_MPLS_HDR_LEN 4 14 : #define VR_MAX_UCAST_LABELS 1024 15 : #define VR_DEF_LABELS 5120 16 : #define VR_MPLS_STACK_BIT (0x1 << 8) 17 : 18 : #define VR_MPLS_OVER_UDP_OLD_DST_PORT 51234 19 : #define VR_MPLS_OVER_UDP_NEW_DST_PORT 6635 20 : #define VR_MPLS_OVER_UDP_DST_PORT VR_MPLS_OVER_UDP_NEW_DST_PORT 21 : #define VR_MPLS_OVER_UDP_SRC_PORT 51000 22 : #define VR_MUDP_PORT_RANGE_START 49152 23 : #define VR_MUDP_PORT_RANGE_END 65535 24 : 25 : #define VR_VXLAN_UDP_DST_PORT 4789 26 : #define VR_VXLAN_UDP_SRC_PORT 52000 27 : #define VR_MPLS_LABEL_STACK_BIT_MASK 0x100 28 : #define VR_MPLS_LABEL_MASK 0XFFFFF 29 : struct vrouter; 30 : struct vr_packet; 31 : struct vr_forwarding_md; 32 : 33 : extern int vr_mpls_init(struct vrouter *); 34 : extern void vr_mpls_exit(struct vrouter *, bool); 35 : extern int vr_mpls_dump(vr_mpls_req *); 36 : extern int vr_mpls_get(vr_mpls_req *); 37 : extern int vr_mpls_add(vr_mpls_req *); 38 : extern int vr_mpls_tunnel_type(unsigned int , unsigned int, unsigned short *); 39 : extern struct vr_nexthop *__vrouter_get_label(struct vrouter *, unsigned int); 40 : extern int vr_mpls_input(struct vrouter *, struct vr_packet *, 41 : struct vr_forwarding_md *); 42 : 43 : 44 : static inline bool 45 10 : vr_mpls_udp_port(unsigned short port) 46 : { 47 10 : if ((port == VR_MPLS_OVER_UDP_OLD_DST_PORT) || 48 : (port == VR_MPLS_OVER_UDP_NEW_DST_PORT)) 49 7 : return true; 50 : 51 3 : return false; 52 : } 53 : 54 : static inline bool 55 1 : vr_vxlan_udp_port(unsigned short port) 56 : { 57 1 : if (port == VR_VXLAN_UDP_DST_PORT) 58 0 : return true; 59 : 60 1 : return false; 61 : } 62 : 63 : #endif /* __VR_MPLS_H__ */