openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

extender.h (14374B)


      1 /*
      2  * 
      3  * 
      4  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      5  * 
      6  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      7  * 
      8  * DO NOT EDIT THIS FILE!
      9  * This file is auto-generated.
     10  * Edits to this file will be lost when it is regenerated.
     11  */
     12 
     13 #ifndef __BCM_EXTENDER_H__
     14 #define __BCM_EXTENDER_H__
     15 
     16 #if defined(INCLUDE_L3)
     17 
     18 #include <bcm/types.h>
     19 
     20 /* extender port match criteria */
     21 typedef enum bcm_extender_port_match_e {
     22     BCM_EXTENDER_PORT_MATCH_PORT_EXTENDED_INVALID = 0, /* Illegal. */
     23     BCM_EXTENDER_PORT_MATCH_PORT_EXTENDED_NONE = 1, /* No source match criteria. */
     24     BCM_EXTENDER_PORT_MATCH_PORT_EXTENDED_PORT_VLAN = 2, /* Match Port + Extender Port VID +
     25                                            VLAN. */
     26     BCM_EXTENDER_PORT_MATCH_PORT_EXTENDED_PORT_VLAN_STACKED = 3, /* Match Port + Extender Port VID + VLAN
     27                                            + CVLAN. */
     28     BCM_EXTENDER_PORT_MATCH_PORT_EXTENDED_PORT_CVLAN = 4, /* Match Port + Extended Port VID +
     29                                            CVLAN. */
     30     BCM_EXTENDER_PORT_MATCH_COUNT = 5   /* Must be last. */
     31 } bcm_extender_port_match_t;
     32 
     33 /* BCM_EXTENDER_PORT_* flags. */
     34 #define BCM_EXTENDER_PORT_WITH_ID           0x00000001 /* Create extender port
     35                                                           with specified ID */
     36 #define BCM_EXTENDER_PORT_REPLACE           0x00000002 /* Replace existing entry */
     37 #define BCM_EXTENDER_PORT_MULTICAST         0x00000004 /* Create multicast type */
     38 #define BCM_EXTENDER_PORT_ENCAP_WITH_ID     0x00000008 /* Use the specified
     39                                                           encap id to allocate
     40                                                           and setup
     41                                                           encapsulation. */
     42 #define BCM_EXTENDER_PORT_EGRESS_TRANSPARENT 0x00000010 /* Use the flag to
     43                                                           transmit packets
     44                                                           transparently out of
     45                                                           this extender port. */
     46 #define BCM_EXTENDER_PORT_DROP              0x00000020 /* Drop egress packets. */
     47 #define BCM_EXTENDER_PORT_ID_ASSIGN_DISABLE 0x00000040 /* Matched traffic is not
     48                                                           assigned to the
     49                                                           extender port */
     50 #define BCM_EXTENDER_PORT_INGRESS_WIDE      0x00000080 /* Creates encap id wide
     51                                                           mode */
     52 #define BCM_EXTENDER_PORT_INITIAL_VLAN      0x00000100 /* Create extender port
     53                                                           with Initial VLAN */
     54 #define BCM_EXTENDER_PORT_MATCH_NONE        0x00000200 /* Create extender port
     55                                                           with no matching
     56                                                           criteria */
     57 
     58 /* ETAG PCP and DE fields select. */
     59 typedef enum bcm_extender_pcp_de_select_e {
     60     BCM_EXTENDER_PCP_DE_SELECT_OUTER_TAG = 0, 
     61     BCM_EXTENDER_PCP_DE_SELECT_INNER_TAG = 1, 
     62     BCM_EXTENDER_PCP_DE_SELECT_DEFAULT   = 2, 
     63     BCM_EXTENDER_PCP_DE_SELECT_PHB       = 3 
     64 } bcm_extender_pcp_de_select_t;
     65 
     66 /* Extender port type. */
     67 typedef struct bcm_extender_port_s {
     68     bcm_extender_port_match_t criteria; /* Match criteria. */
     69     uint32 flags;                       /* BCM_EXTENDER_PORT_xxx. */
     70     bcm_gport_t extender_port_id;       /* GPORT identifier. */
     71     bcm_gport_t port;                   /* Physical port / trunk */
     72     uint16 extended_port_vid;           /* Extender port VID. */
     73     bcm_vlan_t match_vlan;              /* Outer VLAN ID to match. */
     74     bcm_vlan_t match_inner_vlan;        /* Inner VLAN ID to match. */
     75     bcm_extender_pcp_de_select_t pcp_de_select; /* Selection of PCP and DE fields for
     76                                            egress ETAG. */
     77     int qos_map_id;                     /* Qos map id for egress etag mapping
     78                                            profile. */
     79     uint8 pcp;                          /* Default PCP field of ETAG. */
     80     uint8 de;                           /* Default DE field of ETAG. */
     81     bcm_if_t encap_id;                  /* Encap identifier. */
     82     bcm_gport_t failover_port_id;       /* Failover id. */
     83     bcm_failover_t failover_id;         /* Failover object index. */
     84     bcm_failover_t ingress_failover_id; /* 1+1 protection. */
     85     bcm_multicast_t failover_mc_group;  /* MC group for 1+1 scheme failover. */
     86     int inlif_counting_profile;         /* In LIF counting profile */
     87     int outlif_counting_profile;        /* Out LIF counting profile */
     88 } bcm_extender_port_t;
     89 
     90 /* BCM_EXTENDER_FORWARD_* flags. */
     91 #define BCM_EXTENDER_FORWARD_REPLACE        0x00000001 /* Replace existing entry */
     92 #define BCM_EXTENDER_FORWARD_MULTICAST      0x00000002 /* Create multicast type */
     93 #define BCM_EXTENDER_FORWARD_UPSTREAM_ONLY  0x00000004 /* If set, the API
     94                                                           configures upstream
     95                                                           (ECID registration)
     96                                                           information only. */
     97 #define BCM_EXTENDER_FORWARD_DOWNSTREAM_ONLY 0x00000008 /* If set, the API
     98                                                           configures downstream
     99                                                           information only. */
    100 #define BCM_EXTENDER_FORWARD_WITH_ID        0x00000010 /* Set
    101                                                           extender_forward_id
    102                                                           value. Used in case of
    103                                                           downstream only */
    104 #define BCM_EXTENDER_FORWARD_COPY_TO_CPU    0x00000020 /* Copy to CPU for
    105                                                           downstream */
    106 
    107 /* Extender forwarding entry type. */
    108 typedef struct bcm_extender_forward_s {
    109     uint32 flags;                       /* BCM_extender_FORWARD_xxx. */
    110     uint16 name_space;                  /* extender Namespace. */
    111     uint16 extended_port_vid;           /* Extended port VID. */
    112     bcm_gport_t dest_port;              /* Destination Gport. */
    113     bcm_multicast_t dest_multicast;     /* Destination Multicast Group. */
    114     bcm_gport_t extender_forward_id;    /* Downstream forwarding id. */
    115     uint32 class_id;                    /* Class id. */
    116 } bcm_extender_forward_t;
    117 
    118 /* BCM_EXTENDER_ENCAP_* flags. */
    119 #define BCM_EXTENDER_ENCAP_WITH_ID  0x00000001 /* Add using the specified
    120                                                   extender_encap_id value */
    121 #define BCM_EXTENDER_ENCAP_REPLACE  0x00000002 /* Replace existing
    122                                                   extender_encap_id entry */
    123 
    124 /* Extender encapsulation entry type. */
    125 typedef struct bcm_extender_encap_s {
    126     uint32 flags;                   /* BCM_EXTENDER_ENCAP_xxx. */
    127     uint16 extended_port_vid;       /* Extended port VID - PCID value. */
    128     bcm_gport_t extender_encap_id;  /* Extender encapsulation id. */
    129 } bcm_extender_encap_t;
    130 
    131 /* BCM_EXTENDER_EGRESS_* flags. */
    132 #define BCM_EXTENDER_EGRESS_MULTICAST       (1 << 0)   /* Create multicast type */
    133 #define BCM_EXTENDER_EGRESS_SERVICE_VLAN_ADD (1 << 1)   /* Add SD-tag */
    134 #define BCM_EXTENDER_EGRESS_SERVICE_VLAN_DELETE (1 << 2)   /* Delete SD-tag */
    135 #define BCM_EXTENDER_EGRESS_SERVICE_VLAN_REPLACE (1 << 3)   /* Replace SD-tag VLAN ID */
    136 #define BCM_EXTENDER_EGRESS_SERVICE_PRI_REPLACE (1 << 4)   /* Replace SD-tag
    137                                                           Priority */
    138 #define BCM_EXTENDER_EGRESS_SERVICE_TPID_REPLACE (1 << 5)   /* Replace SD-tag TPID */
    139 #define BCM_EXTENDER_EGRESS_L3              (1 << 6)   /* Create L3 egress
    140                                                           object */
    141 
    142 /* EXTENDER egress type. */
    143 typedef struct bcm_extender_egress_s {
    144     uint32 flags;                       /* BCM_EXTENDER_EGRESS_xxx. */
    145     bcm_gport_t port;                   /* Physical port / trunk. */
    146     uint16 extended_port_vid;           /* extended port VID field of ETAG. */
    147     bcm_vlan_t match_vlan;              /* Outer VLAN ID to match. */
    148     bcm_extender_pcp_de_select_t pcp_de_select; /* Selection of PCP and DE fields for
    149                                            egress ETAG. */
    150     int qos_map_id;                     /* Qos map id for egress etag mapping
    151                                            profile. */
    152     uint8 pcp;                          /* Default PCP field of ETAG. */
    153     uint8 de;                           /* Default DE field of ETAG. */
    154     bcm_if_t egress_if;                 /* Egress object ID. */
    155     int service_qos_map_id;             /* Egress SD-tag Priority and CFI
    156                                            mapping profile ID. */
    157     uint16 service_tpid;                /* Egress SD-tag TPID. */
    158     bcm_vlan_t service_vlan;            /* Egress SD-tag VLAN ID. */
    159     uint8 service_pri;                  /* Egress SD-tag default Priority. */
    160     uint8 service_cfi;                  /* Egress SD-tag default CFI. */
    161     bcm_if_t intf;                      /* L3 interface. */
    162     uint32 multicast_flags;             /* BCM_L3_MULTICAST flag definitions. */
    163 } bcm_extender_egress_t;
    164 
    165 #ifndef BCM_HIDE_DISPATCHABLE
    166 
    167 /* Initialize extender module. */
    168 extern int bcm_extender_init(
    169     int unit);
    170 
    171 /* Detach extender module. */
    172 extern int bcm_extender_cleanup(
    173     int unit);
    174 
    175 #endif /* BCM_HIDE_DISPATCHABLE */
    176 
    177 /* Initialize the extender port structure. */
    178 extern void bcm_extender_port_t_init(
    179     bcm_extender_port_t *extender_port);
    180 
    181 #ifndef BCM_HIDE_DISPATCHABLE
    182 
    183 /* Create extender port */
    184 extern int bcm_extender_port_add(
    185     int unit, 
    186     bcm_extender_port_t *extender_port);
    187 
    188 /* Delete extender port. */
    189 extern int bcm_extender_port_delete(
    190     int unit, 
    191     bcm_gport_t extender_port_id);
    192 
    193 /* Delete all extender ports. */
    194 extern int bcm_extender_port_delete_all(
    195     int unit);
    196 
    197 /* Get extender port information */
    198 extern int bcm_extender_port_get(
    199     int unit, 
    200     bcm_extender_port_t *extender_port);
    201 
    202 #endif /* BCM_HIDE_DISPATCHABLE */
    203 
    204 /* Extender port traverse callback. */
    205 typedef int (*bcm_extender_port_traverse_cb)(
    206     int unit, 
    207     bcm_extender_port_t *extender_port, 
    208     void *user_data);
    209 
    210 #ifndef BCM_HIDE_DISPATCHABLE
    211 
    212 /* Extender port traverse */
    213 extern int bcm_extender_port_traverse(
    214     int unit, 
    215     bcm_extender_port_traverse_cb cb, 
    216     void *user_data);
    217 
    218 #endif /* BCM_HIDE_DISPATCHABLE */
    219 
    220 /* Initialize the extender forwarding entry structure. */
    221 extern void bcm_extender_forward_t_init(
    222     bcm_extender_forward_t *extender_forward_entry);
    223 
    224 #ifndef BCM_HIDE_DISPATCHABLE
    225 
    226 /* Create extender forwarding entry */
    227 extern int bcm_extender_forward_add(
    228     int unit, 
    229     bcm_extender_forward_t *extender_forward_entry);
    230 
    231 /* Delete extender forwarding entry. */
    232 extern int bcm_extender_forward_delete(
    233     int unit, 
    234     bcm_extender_forward_t *extender_forward_entry);
    235 
    236 /* Delete all extender forwarding entries. */
    237 extern int bcm_extender_forward_delete_all(
    238     int unit);
    239 
    240 /* Get extender forwarding entry information */
    241 extern int bcm_extender_forward_get(
    242     int unit, 
    243     bcm_extender_forward_t *extender_forward_entry);
    244 
    245 #endif /* BCM_HIDE_DISPATCHABLE */
    246 
    247 /* Extender forwarding entry traverse callback. */
    248 typedef int (*bcm_extender_forward_traverse_cb)(
    249     int unit, 
    250     bcm_extender_forward_t *extender_forward_entry, 
    251     void *user_data);
    252 
    253 #ifndef BCM_HIDE_DISPATCHABLE
    254 
    255 /* Extender forwarding entry traverse */
    256 extern int bcm_extender_forward_traverse(
    257     int unit, 
    258     bcm_extender_forward_traverse_cb cb, 
    259     void *user_data);
    260 
    261 #endif /* BCM_HIDE_DISPATCHABLE */
    262 
    263 /* Initialize the extender encapsulation entry structure. */
    264 extern void bcm_extender_encap_t_init(
    265     bcm_extender_encap_t *extender_encap);
    266 
    267 #ifndef BCM_HIDE_DISPATCHABLE
    268 
    269 /* Create extender encapsulation entry */
    270 extern int bcm_extender_encap_create(
    271     int unit, 
    272     bcm_extender_encap_t *extender_encap);
    273 
    274 /* Destroy extender encapsulation entry. */
    275 extern int bcm_extender_encap_destroy(
    276     int unit, 
    277     bcm_gport_t *extender_encap_id);
    278 
    279 /* Destroy all extender encapsulation entries. */
    280 extern int bcm_extender_encap_destroy_all(
    281     int unit);
    282 
    283 /* Get extender encapsulation entry information */
    284 extern int bcm_extender_encap_get(
    285     int unit, 
    286     bcm_extender_encap_t *extender_encap);
    287 
    288 #endif /* BCM_HIDE_DISPATCHABLE */
    289 
    290 /* Extender port encapsulation entry traverse callback. */
    291 typedef int (*bcm_extender_encap_traverse_cb)(
    292     int unit, 
    293     bcm_extender_encap_t *extender_encap, 
    294     void *user_data);
    295 
    296 #ifndef BCM_HIDE_DISPATCHABLE
    297 
    298 /* Extender encapsulation entry traverse */
    299 extern int bcm_extender_encap_traverse(
    300     int unit, 
    301     bcm_extender_encap_traverse_cb cb, 
    302     void *user_data);
    303 
    304 #endif /* BCM_HIDE_DISPATCHABLE */
    305 
    306 /* Initialize the Extender egress structure. */
    307 extern void bcm_extender_egress_t_init(
    308     bcm_extender_egress_t *extender_egress);
    309 
    310 #ifndef BCM_HIDE_DISPATCHABLE
    311 
    312 /* Add a Extender egress object to a Extender port */
    313 extern int bcm_extender_egress_add(
    314     int unit, 
    315     bcm_gport_t extender_port, 
    316     bcm_extender_egress_t *extender_egress);
    317 
    318 /* Delete a Extender egress object from a Extender port. */
    319 extern int bcm_extender_egress_delete(
    320     int unit, 
    321     bcm_gport_t extender_port, 
    322     bcm_extender_egress_t *extender_egress);
    323 
    324 /* Set Extender egress objects for a Extender port */
    325 extern int bcm_extender_egress_set(
    326     int unit, 
    327     bcm_gport_t extender_port, 
    328     int array_size, 
    329     bcm_extender_egress_t *extender_egress_array);
    330 
    331 /* Get an Extender egress object for a Extender port */
    332 extern int bcm_extender_egress_get(
    333     int unit, 
    334     bcm_gport_t extender_port, 
    335     bcm_extender_egress_t *extender_egress);
    336 
    337 /* Get Extender egress objects for a Extender port */
    338 extern int bcm_extender_egress_get_all(
    339     int unit, 
    340     bcm_gport_t extender_port, 
    341     int array_size, 
    342     bcm_extender_egress_t *extender_egress_array, 
    343     int *count);
    344 
    345 /* Delete all Extender egress objects from a Extender port. */
    346 extern int bcm_extender_egress_delete_all(
    347     int unit, 
    348     bcm_gport_t extender_port);
    349 
    350 #endif /* defined(INCLUDE_L3) */
    351 
    352 #endif /* BCM_HIDE_DISPATCHABLE */
    353 
    354 #endif /* __BCM_EXTENDER_H__ */