Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2018 - present. Boling Consulting Solutions (bcsw.net) |
Andrea Campanella | 7167ebb | 2020-02-24 09:56:38 +0100 | [diff] [blame] | 3 | * Copyright 2020-present Open Networking Foundation |
| 4 | |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 5 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | * you may not use this file except in compliance with the License. |
| 7 | * You may obtain a copy of the License at |
Andrea Campanella | 7167ebb | 2020-02-24 09:56:38 +0100 | [diff] [blame] | 8 | |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 9 | * http://www.apache.org/licenses/LICENSE-2.0 |
Andrea Campanella | 7167ebb | 2020-02-24 09:56:38 +0100 | [diff] [blame] | 10 | |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 11 | * Unless required by applicable law or agreed to in writing, software |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | * See the License for the specific language governing permissions and |
| 15 | * limitations under the License. |
| 16 | */ |
Chip Boling | 2d51f05 | 2021-02-09 09:04:15 -0600 | [diff] [blame] | 17 | /* |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 18 | * NOTE: This file was generated, manual edits will be overwritten! |
| 19 | * |
| 20 | * Generated by 'goCodeGenerator.py': |
| 21 | * https://github.com/cboling/OMCI-parser/README.md |
| 22 | */ |
| 23 | |
| 24 | package generated |
| 25 | |
| 26 | import "github.com/deckarep/golang-set" |
| 27 | |
| 28 | // ExtendedVlanTaggingOperationConfigurationDataClassID is the 16-bit ID for the OMCI |
| 29 | // Managed entity Extended VLAN tagging operation configuration data |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 30 | const ExtendedVlanTaggingOperationConfigurationDataClassID = ClassID(171) // 0x00ab |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 31 | |
| 32 | var extendedvlantaggingoperationconfigurationdataBME *ManagedEntityDefinition |
| 33 | |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 34 | // ExtendedVlanTaggingOperationConfigurationData (Class ID: #171 / 0x00ab) |
| 35 | // This ME organizes data associated with VLAN classification and tagging operations. Regardless of |
| 36 | // its point of attachment, the specified tagging operations refer to the upstream direction. |
| 37 | // Instances of this ME are created and deleted by the OLT. |
| 38 | // |
| 39 | // Through separate attributes, this ME supports either a Received frame VLAN tagging operation |
| 40 | // table attribute in its backward compatible form, or an enhanced frame classification and |
| 41 | // processing capability. The OLT can determine whether the ONU supports the enhanced capability |
| 42 | // through the Enhanced mode attribute of the ONU3-G ME. |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 43 | // |
| 44 | // Relationships |
| 45 | // Zero or one instance of this ME may exist for an instance of any ME that can terminate or modify |
| 46 | // an Ethernet stream.//// When this ME is associated with a UNI-side TP, it performs its upstream classification and |
| 47 | // tagging operations before offering the upstream frame to other filtering, bridging or switching |
| 48 | // functions. In the downstream direction, the defined inverse operation is the last operation |
| 49 | // performed on the frame before offering it to the UNI-side termination.//// When this ME is associated with an ANI-side TP, it performs its upstream classification and |
| 50 | // tagging operations as the last step before transmission to the OLT, after having received the |
| 51 | // upstream frame from other filtering, bridging or switching functions. In the downstream |
| 52 | // direction, the defined inverse operation is the first operation performed on the frame before |
| 53 | // offering it to possible filter, bridge or switch functions. |
| 54 | // |
| 55 | // Attributes |
| 56 | // Managed Entity Id |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 57 | // This attribute provides a unique number for each instance of this ME. (R, setbycreate) |
| 58 | // (mandatory) (2-bytes) |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 59 | // |
| 60 | // Association Type |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 61 | // This attribute identifies the type of the ME associated with this extended VLAN tagging ME. |
| 62 | // Values are assigned as follows. |
| 63 | // |
| 64 | // 0 MAC bridge port configuration data |
| 65 | // |
| 66 | // 1 IEEE 802.1p mapper service profile |
| 67 | // |
| 68 | // 2 Physical path termination point Ethernet UNI |
| 69 | // |
| 70 | // 3 IP host config data or IPv6 host config data |
| 71 | // |
| 72 | // 4 Physical path termination point xDSL UNI |
| 73 | // |
| 74 | // 5 GEM IW termination point |
| 75 | // |
| 76 | // 6 Multicast GEM IW termination point |
| 77 | // |
| 78 | // 7 Physical path termination point MoCA UNI |
| 79 | // |
| 80 | // 8 Reserved |
| 81 | // |
| 82 | // 9 Ethernet flow termination point |
| 83 | // |
| 84 | // 10 Virtual Ethernet interface point |
| 85 | // |
| 86 | // 11 MPLS pseudowire termination point |
| 87 | // |
| 88 | // 12 EFM bonding group |
| 89 | // |
| 90 | // (R,-W, setbycreate) (mandatory) (1-byte) |
| 91 | // |
| 92 | // NOTE 1 - If a MAC bridge is configured, code points 1, 5, 6 and 11 are associated with the ANI |
| 93 | // side of the MAC bridge. Code point 0 is associated with the ANI or UNI side, depending on the |
| 94 | // location of the MAC bridge port. The other code points are associated with the UNI side. |
| 95 | // |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 96 | // When the extended VLAN tagging ME is associated with the ANI side, it behaves as an upstream |
| 97 | // egress rule, and as a downstream ingress rule when the downstream mode attribute is equal to 0. |
| 98 | // When the extended VLAN tagging ME is associated with the UNI side, the extended VLAN tagging ME |
| 99 | // behaves as an upstream ingress rule, and as a downstream egress rule when the downstream mode |
| 100 | // attribute is equal to 0. |
| 101 | // |
| 102 | // Received Frame Vlan Tagging Operation Table Max Size |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 103 | // This attribute indicates the maximum number of entries that can be set in the received frame |
| 104 | // VLAN tagging operation table. (R) (mandatory) (2-bytes) |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 105 | // |
| 106 | // Input Tpid |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 107 | // This attribute gives the special TPID value for operations on the input (filtering) side of the |
| 108 | // table. Typical values include 0x88A8 and 0x9100. (R,-W) (mandatory) (2-bytes) |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 109 | // |
| 110 | // Output Tpid |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 111 | // This attribute gives the special TPID value for operations on the output (tagging) side of the |
| 112 | // table. Typical values include 0x88A8 and 0x9100. (R,-W) (mandatory) (2-bytes) |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 113 | // |
| 114 | // Downstream Mode |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 115 | // Regardless of its association, the rules of the received frame VLAN tagging operation table |
| 116 | // attribute pertain to upstream traffic. The downstream mode attribute defines the tagging action |
| 117 | // to be applied to downstream frames. |
| 118 | // |
| 119 | // The received frame VLAN tagging operation table installs defaults upstream rules. In the |
| 120 | // downstream direction, the upstream default rules with the default treatment do not apply. It |
| 121 | // should be noted that downstream frame treatment is defined by the downstream mode attribute and |
| 122 | // is not affected by the upstream default rules. |
| 123 | // |
| 124 | // The received frame VLAN tagging operation table can result in two types of rule mappings: |
| 125 | // |
| 126 | // o One to one mapping: A table contains one or more rules that result in unique mappings between |
| 127 | // the ingress and egress flows. |
| 128 | // |
| 129 | // o Many to one mapping: A table contains more than one rule that results in the same ANI-side tag |
| 130 | // configuration. |
| 131 | // |
| 132 | // For one-to-one mappings, the inverse operation to apply in the downstream direction (in the |
| 133 | // case of bidirectional flows) is the inverse operation of the upstream rule. |
| 134 | // |
| 135 | // Many-to-one mappings are possible however, and these are treated as follows. |
| 136 | // |
| 137 | // o If an upstream many-to-one mapping results from multiple operation rules producing the same |
| 138 | // ANI-side tag configuration, then the first matching rule in the list defines the inverse |
| 139 | // operation. The meaning of match depends on the value of the downstream mode attribute. |
| 140 | // |
| 141 | // o If the many-to-one mapping results from "don't care" fields in the filter being replaced with |
| 142 | // provisioned fields in the ANI side tags, then the inverse is defined to set the corresponding |
| 143 | // fields on the ANI side to their lowest legal value. |
| 144 | // |
| 145 | // If the upstream rule merely copies (i.e., no explicit value is specified in the filter field) an |
| 146 | // inbound tag value to an outbound tag value, the comparison in the downstream direction applies |
| 147 | // to all tag values. This applies separately to the VID and P-bit fields. For example, with a |
| 148 | // downstream mode of 2 and an upstream rule that translates the VID while carrying forward the |
| 149 | // P-bit value, downstream frames that match the specified WAN-side VID will match any P-bit value |
| 150 | // and will translate the VID. |
| 151 | // |
| 152 | // 0 The operation performed in the downstream direction is the inverse of that performed in the |
| 153 | // upstream direction. Which treatment and filter fields are used for downstream filtering and the |
| 154 | // handling of unmatched frames are left to the implementation of the ONU. |
| 155 | // |
| 156 | // 1 Regardless of the filter rules, no operation is performed in the downstream direction. All |
| 157 | // downstream frames are forwarded unmodified. |
| 158 | // |
| 159 | // 2 Filter on VID and P-bit value. On a match, perform the inverse operation on both the VID and |
| 160 | // P-bit value. If no match is found, forward the frame unmodified. |
| 161 | // |
| 162 | // 3 Filter on VID only. On a match, perform the inverse VID operation only; pass the P bits |
| 163 | // through. If no match is found, forward the frame unmodified. |
| 164 | // |
| 165 | // 4 Filter on P-bit only. On a match, perform the inverse P-bit operation only; pass the VID |
| 166 | // through. If no match is found, forward the frame unmodified. |
| 167 | // |
| 168 | // 5 Filter on VID and P-bit value. On a match, perform the inverse operation on both the VID and |
| 169 | // P-bit value. If no match is found, discard the frame. |
| 170 | // |
| 171 | // 6 Filter on VID. On a match, perform the inverse operation on the VID only; pass the P bits |
| 172 | // through. If no match is found, discard the frame. |
| 173 | // |
| 174 | // 7 Filter on P-bit only. On a match, perform the inverse P-bit operation only; pass the VID |
| 175 | // through. If no match is found, discard the frame. |
| 176 | // |
| 177 | // 8 Regardless of the filter rules, discard all downstream traffic. |
| 178 | // |
| 179 | // Please refer to Table 9.3.13-2 for example downstream mode use cases. |
| 180 | // |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 181 | // All other values are reserved. (R, W) (mandatory) (1 byte) |
| 182 | // |
| 183 | // Received Frame Vlan Tagging Operation Table |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 184 | // Padding: (8 bits) |
| 185 | // |
| 186 | // Filter Ethertype: (4 bits) the Ethertype value on which to filter received frames, as follows. |
| 187 | // |
| 188 | // NOTE 3 - This filter is recommended for use on untagged frames or frames with priority tags |
| 189 | // only. |
| 190 | // |
| 191 | // 0 Do not filter on Ethertype. |
| 192 | // |
| 193 | // 1 Ethertype = 0x0800 (filter IPoE frames) |
| 194 | // |
| 195 | // 2 Ethertype = 0x8863 or 0x8864 (filter PPPoE frames) |
| 196 | // |
| 197 | // 3 Ethertype = 0x0806 (filter ARP frames) |
| 198 | // |
| 199 | // 4 Ethertype = 0x86DD (filter IPv6 IpoE frames) |
| 200 | // |
| 201 | // 5 Ethertype = 0x888E (filter EAPOL frames) |
| 202 | // |
| 203 | // Other values: reserved. |
| 204 | // |
| 205 | // Filter on extended criteria: (8 bits) filter on key upper level protocols: |
| 206 | // |
| 207 | // 0 Do not filter on extended criteria |
| 208 | // |
| 209 | // 1 DHCPv4 - frames matching the well-known DHCPv4 UDP ports (67, 68) will be filtered by this |
| 210 | // criteria code point. |
| 211 | // |
| 212 | // 2 DHCPv6 - frames matching the well-known DHCPv6 UDP ports (546, 547) will be filtered by this |
| 213 | // criteria code point. |
| 214 | // |
| 215 | // NOTE 4 - This filter is recommended for use on untagged frames or priority framed tags only. |
| 216 | // |
| 217 | // Treatment tags to remove: (2 bits) Defines the tag treatment. The following values are |
| 218 | // supported: |
| 219 | // |
| 220 | // 0..2 Remove 0, 1 or 2 tags, respectively. If one tag is specified, then the outer tag is |
| 221 | // stripped from double-tagged frames. |
| 222 | // |
| 223 | // 3 Discard the frame. No symmetric downstream operation exists; i.e., this rule is ignored in the |
| 224 | // downstream direction. |
| 225 | // |
| 226 | // Padding: (10 bits) |
| 227 | // |
| 228 | // Treatment outer priority: (4 bits): Defines the outer VLAN priority treatment. The following |
| 229 | // values are supported: |
| 230 | // |
| 231 | // 0..7 Add an outer tag, and insert this value as the priority in the outer VLAN tag. |
| 232 | // |
| 233 | // 8 Add an outer tag, and copy the outer priority from the inner priority of the received frame. |
| 234 | // |
| 235 | // 9 Add an outer tag, and copy the outer priority from the outer priority of the received frame. |
| 236 | // |
| 237 | // 10 Add an outer tag, and derive P bits from the DSCP field of the incoming frame according to |
| 238 | // the Extended VLAN tagging operation configuration data ME DSCP to P-bit mapping attribute. |
| 239 | // |
| 240 | // 15 Do not add an outer tag. |
| 241 | // |
| 242 | // Other values: reserved. |
| 243 | // |
| 244 | // Treatment outer VID: (13 bits). Defines the outer VID treatment. The following values are |
| 245 | // supported: |
| 246 | // |
| 247 | // 0..4094 Use this value as the VID in the outer VLAN tag. |
| 248 | // |
| 249 | // 4096 Copy the outer VID from the inner VID of the received frame. |
| 250 | // |
| 251 | // 4097 Copy the outer VID from the outer VID of the received frame. |
| 252 | // |
| 253 | // Other values: reserved. |
| 254 | // |
| 255 | // Treatment outer TPID/DEI: (3 bits). Defines the outer VLAN TPID/DEI treatment. The following |
| 256 | // values are supported: |
| 257 | // |
| 258 | // 000 Copy TPID (and DEI, if present) from the inner tag of the received frame. |
| 259 | // |
| 260 | // 001 Copy TPID (and DEI, if present) from the outer tag of the received frame. |
| 261 | // |
| 262 | // 010 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 263 | // data ME and copy DEI bit from the inner tag of the received frame |
| 264 | // |
| 265 | // 011 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 266 | // data ME and copy DEI from the outer tag of the received frame |
| 267 | // |
| 268 | // 100 Set TPID = 0x8100 |
| 269 | // |
| 270 | // 101 Reserved |
| 271 | // |
| 272 | // 110 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 273 | // data ME and set DEI = 0 |
| 274 | // |
| 275 | // 111 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 276 | // data ME and set DEI = 1 |
| 277 | // |
| 278 | // Padding: (12 bits) |
| 279 | // |
| 280 | // Treatment inner priority: (4 bits). Defines the inner VLAN priority treatment. The following |
| 281 | // values are supported: |
| 282 | // |
| 283 | // 0..7 Add an inner tag, and insert this value as the priority to insert in the inner VLAN tag. |
| 284 | // |
| 285 | // 8 Add an inner tag, and copy the inner priority from the inner priority of the received frame. |
| 286 | // |
| 287 | // 9 Add an inner tag, and copy the inner priority from the outer priority of the received frame. |
| 288 | // |
| 289 | // 10 Add an inner tag, and derive P bits from the DSCP field of the incoming frame according to |
| 290 | // the Extended VLAN tagging operation configuration data ME DSCP to P-bit mapping attribute. |
| 291 | // |
| 292 | // 15 Do not add an inner tag. |
| 293 | // |
| 294 | // Other values: reserved. |
| 295 | // |
| 296 | // Treatment inner VID: (13 bits): Defines the inner VLAN VID treatment. The following values are |
| 297 | // supported: |
| 298 | // |
| 299 | // 0..4094 Use this value as the VID in the inner VLAN tag. |
| 300 | // |
| 301 | // 4096 Copy the inner VID from the inner VID of the received frame. |
| 302 | // |
| 303 | // 4097 Copy the inner VID from the outer VID of the received frame. |
| 304 | // |
| 305 | // Other values: reserved. |
| 306 | // |
| 307 | // Treatment inner TPID/DEI: (3 bits). Defines the inner VLAN TPID/DEI treatment. The following |
| 308 | // values are supported: |
| 309 | // |
| 310 | // 000 Copy TPID (and DEI, if present) from the inner tag of the received frame. |
| 311 | // |
| 312 | // 001 Copy TPID (and DEI, if present) from the outer tag of the received frame. |
| 313 | // |
| 314 | // 010 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 315 | // data ME and copy the DEI bit from the inner tag of the received frame. |
| 316 | // |
| 317 | // 011 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 318 | // data ME and, copy the DEI from the outer tag of the received frame. |
| 319 | // |
| 320 | // 100 Set TPID = 0x8100 |
| 321 | // |
| 322 | // 101 Reserved |
| 323 | // |
| 324 | // 110 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 325 | // data ME and set DEI = 0 |
| 326 | // |
| 327 | // 111 Set TPID = output TPID attribute value of the Extended VLAN tagging operation configuration |
| 328 | // data ME and set DEI = 1 |
| 329 | // |
| 330 | // This attribute is a table that filters and tags upstream frames. Each entry represents a tagging |
| 331 | // rule, comprising a filtering part (the first eight fields) and a treatment part (the last seven |
| 332 | // fields). Each incoming upstream packet is matched against each rule in list order. The first |
| 333 | // rule that matches the packet is selected as the active rule, and the packet is then treated |
| 334 | // according to that rule. |
| 335 | // |
| 336 | // There are three categories of rules: zero-tag, single-tag, and double-tag rules. Logically, |
| 337 | // these categories are separate, and apply to their respective incoming frame types. In other |
| 338 | // words, a single-tag rule should not apply to a double-tagged frame, even though the single-tag |
| 339 | // rule might match the outer tag of the double-tagged frame. |
| 340 | // |
| 341 | // Single-tag rules have a filter outer priority field-= 15 (indicating no external tag), zero-tag |
| 342 | // rules have both filter priority fields-= 15 (indicating no tags), and double-tag rules have both |
| 343 | // filter priority fields set to a value that differs from 15 (indicating two tags). |
| 344 | // |
| 345 | // Each tagging rule is based on a remove or an add operation, where up to two tags can be removed |
| 346 | // or added. A modify operation is applied by the combination of remove and add. |
| 347 | // |
| 348 | // By convention, when a single tag is added, the treatments use the inner tag data fields. This is |
| 349 | // true even for treatments where a single tag is added to a frame that already has a tag, i.e., |
| 350 | // added as a second tag. The outer tag data fields are used only when two tags are added by the |
| 351 | // same rule. |
| 352 | // |
| 353 | // The terms inner and outer only have meaning with respect to the tags that are being filtered or |
| 354 | // added. |
| 355 | // |
| 356 | // The first 8-bytes of each entry are guaranteed to be unique, and are used to identify table |
| 357 | // entries (list order, above, refers to a sort on the first 8-bytes). The OLT deletes a table |
| 358 | // entry by setting all of its last 8-bytes to 0xFF. |
| 359 | // |
| 360 | // When the table is created, the ONU should autonomously predefine three entries that list the |
| 361 | // default treatment (normal forwarding without filtering or modification) for untagged, single |
| 362 | // tagged, and double tagged frames. As an exception to the rule on ordered processing, these |
| 363 | // default rules are always considered as a last resort for frames that do not match any other |
| 364 | // rule. Best practice dictates that these entries not be deleted by the OLT; however, they can be |
| 365 | // modified to produce the desired default behaviour. |
| 366 | // |
| 367 | // It should be noted that downstream frame treatment is defined by the downstream mode attribute |
| 368 | // and is not affected by the upstream default rules. |
| 369 | // |
| 370 | // 15, 4096, x, 15, 4096, x, 0, (0, 15, x, x, 15, x, x) - no tags |
| 371 | // |
| 372 | // 15, 4096, x, 14, 4096, x, 0, (0, 15, x, x, 15, x, x) - 1 tag |
| 373 | // |
| 374 | // 14, 4096, x, 14, 4096, x, 0, (0, 15, x, x, 15, x, x) - 2 tags |
| 375 | // |
| 376 | // NOTE 2 - x is a "don't care" field and should be set to zero. |
| 377 | // |
| 378 | // See Figure 9.3.13-1. |
| 379 | // |
| 380 | // (R,-W) (mandatory) (16N bytes, where N is the number of VLAN tagging rules) |
| 381 | // |
| 382 | // Filter outer priority: (4 bits) Defines the outer VLAN priority filtering operation. The |
| 383 | // following values are supported: |
| 384 | // |
| 385 | // 0..7 Filter received frames on this outer priority (P bit) value. |
| 386 | // |
| 387 | // 8 Do not filter on outer priority. |
| 388 | // |
| 389 | // 14 This is the default filter when no other two-tag rule applies. |
| 390 | // |
| 391 | // 15 This entry is not a double-tag rule; ignore all other outer tag filter fields. |
| 392 | // |
| 393 | // Other values: reserved. |
| 394 | // |
| 395 | // Filter outer VID: (13 bits) Defines the outer VLAN VID filtering operation. The following |
| 396 | // values are supported: |
| 397 | // |
| 398 | // 0..4094 Filter received frames on this outer VID value. |
| 399 | // |
| 400 | // 4096 Do not filter on the outer VID. |
| 401 | // |
| 402 | // Other values: reserved. |
| 403 | // |
| 404 | // Filter outer TPID/DEI: (3 bits) Defines the outer VLAN TPID/DEI filtering operation. The |
| 405 | // following values are supported: |
| 406 | // |
| 407 | // 000 Do not filter on outer TPID field. |
| 408 | // |
| 409 | // 100 Outer TPID = 0x8100. Filter on frames with the outer TPID set to 0x8100. |
| 410 | // |
| 411 | // 101 Outer TPID = input TPID attribute value, don't care about DEI bit. Filter on frames with the |
| 412 | // outer TPID set to match the Extended VLAN tagging operation configuration data Input TPID |
| 413 | // attribute value and ignore the DEI bit. |
| 414 | // |
| 415 | // 110 Outer TPID = input TPID, DEI = 0. Filter on frames with the outer TPID set to match the |
| 416 | // Extended VLAN tagging operation configuration data Input TPID attribute value and DEI set to the |
| 417 | // value 0. |
| 418 | // |
| 419 | // 111 Outer TPID = input TPID, DEI = 1. Filter on frames with the outer TPID set to match the |
| 420 | // Extended VLAN tagging operation configuration data Input TPID attribute value and DEI set to the |
| 421 | // value 1 |
| 422 | // |
| 423 | // Padding: (12 bits) |
| 424 | // |
| 425 | // Filter inner priority: (4 bits) Defines the inner VLAN priority filtering operation. The |
| 426 | // following values are supported: |
| 427 | // |
| 428 | // 0..7 Filter received frames on this inner priority value. |
| 429 | // |
| 430 | // 8 Do not filter on inner priority. |
| 431 | // |
| 432 | // 14 This is the default filter when no other one-tag rule applies. |
| 433 | // |
| 434 | // 15 This entry is a no-tag rule; ignore all other VLAN tag filter fields. |
| 435 | // |
| 436 | // Other values: reserved. |
| 437 | // |
| 438 | // Filter inner VID: (13 bits) Defines the inner VLAN VID filtering operation. The following |
| 439 | // values are supported: |
| 440 | // |
| 441 | // 0..4094 Filter received frames on this inner VID value. |
| 442 | // |
| 443 | // 4096 Do not filter on the inner VID. |
| 444 | // |
| 445 | // Other values: reserved. |
| 446 | // |
| 447 | // Filter inner TPID/DEI: (3 bits) Defines the inner VLAN TPID/DEI filtering operation. The |
| 448 | // following values are supported: |
| 449 | // |
| 450 | // 000 Do not filter on inner TPID field. |
| 451 | // |
| 452 | // 100 Inner TPID = 0x8100. Filter on frames with the inner TPID set to 0x8100. |
| 453 | // |
| 454 | // 101 Inner TPID = input TPID attribute value, don't care about DEI bit. Filter on frames with the |
| 455 | // inner TPID set to match the Extended VLAN tagging operation configuration data Input TPID |
| 456 | // attribute value and ignore the DEI bit. |
| 457 | // |
| 458 | // 110 Inner TPID = input TPID, DEI = 0. Filter on frames with the inner TPID set to match the |
| 459 | // Extended VLAN tagging operation configuration data Input TPID attribute value and DEI set to the |
| 460 | // value 0. |
| 461 | // |
| 462 | // 111 Inner TPID = input TPID, DEI = 1. Filter on frames with the inner TPID set to match the |
| 463 | // Extended VLAN tagging operation configuration data Input TPID attribute value and DEI set to the |
| 464 | // value 1. |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 465 | // |
| 466 | // Associated Me Pointer |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 467 | // This attribute points to the ME with which this extended VLAN tagging operation configuration |
| 468 | // data ME is associated. (R,-W, setbycreate) (mandatory) (2-bytes) |
| 469 | // |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 470 | // NOTE 5 - When the association type is xDSL, the two MSBs may be used to indicate a bearer |
| 471 | // channel. |
| 472 | // |
| 473 | // Dscp To P Bit Mapping |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 474 | // DSCP to P-bit mapping: This attribute specifies mapping from DSCP to P bits. The attribute can |
| 475 | // be considered a bit string sequence of 64 3-bit groups. The 64 sequence entries represent the |
| 476 | // possible values of the 6-bit DSCP field. Each 3-bit group specifies the P-bit value to which the |
| 477 | // associated DSCP value should be mapped. (R,-W) (optional) (24-bytes) |
| 478 | // |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 479 | // NOTE 6 - If certain bits in the DSCP field are to be ignored in the mapping process, the |
| 480 | // attribute should be provisioned such that all possible values of those bits produce the same |
| 481 | // P-bit mapping. This can be applied to the case where instead of full DSCP, the operator wishes |
| 482 | // to adopt the priority mechanism based on IP precedence, which needs only the three MSBs of the |
| 483 | // DSCP field. |
| 484 | // |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 485 | // Enhanced Mode |
| 486 | // The Boolean value true specifies that the Enhanced received frame classification and processing |
| 487 | // table is used, and the Received frame VLAN tagging operation table is ignored. The value false |
| 488 | // indicates the Enhanced received frame classification and processing table is not used. It is |
| 489 | // strongly recommended that the OLT uses the same value for all Extended VLAN tagging operation |
| 490 | // configuration data instances created on an ONU. (R, Setbycreate) (optional) (1-byte) |
| 491 | // |
| 492 | // Enhanced Received Frame Classification And Processing Table |
| 493 | // This attribute is a table that provides enhanced capability for frame classification and |
| 494 | // processing. It extends the Received frame VLAN tagging operation table attribute with a set |
| 495 | // control field, a row key and direction. Each incoming packet is matched against each rule in row |
| 496 | // key order (smaller value row key has higher precedence) and direction. The first rule that |
| 497 | // matches the packet is selected as the active rule, and the packet is then treated according to |
| 498 | // that rule. |
| 499 | // |
| 500 | // When the table is empty, the ONU discards all received frames. The OLT may choose to create |
| 501 | // three entries that list the default treatment (normal forwarding without filtering or |
| 502 | // modification) for untagged, single tagged, and double tagged frames, with the direction field |
| 503 | // set to 0. |
| 504 | // |
| 505 | // NOTE 7 - Where no change is noted, the definitions in the Received frame VLAN tagging operation |
| 506 | // table attribute remain applicable. |
| 507 | // |
| 508 | // (R,-W) (optional) (28N bytes, where N is the number of entries in the table). |
| 509 | // |
| 510 | // Set ctrl: (2 bits) |
| 511 | // |
| 512 | // This field determines the meaning of a set operation. These bits are returned as 00 during get |
| 513 | // next operations. |
| 514 | // |
| 515 | // 1 Write this entry into the table. Overwrite any existing entry with the same row key. |
| 516 | // |
| 517 | // 2 Delete this entry from the table. The remaining fields are not meaningful. |
| 518 | // |
| 519 | // NOTE 8 - unlike the delete operation in the Received frame VLAN tagging operation table, the OLT |
| 520 | // does not need to set all eight bytes in Word 4 and Word 5 to 0xFF. |
| 521 | // |
| 522 | // 3 Clear all entries from the table. The remaining fields are not meaningful. |
| 523 | // |
| 524 | // Other values: reserved. |
| 525 | // |
| 526 | // Dir: (2 bits) |
| 527 | // |
| 528 | // This field determines the direction of the classification and processing rule. |
| 529 | // |
| 530 | // 0 This is an upstream rule. In the downstream direction, the inverse classification and |
| 531 | // operation is defined based on the downstream mode code point. All downstream mode codepoints are |
| 532 | // considered valid to be used when dir=0 is used (including downstream mode 8). |
| 533 | // |
| 534 | // 1 This is an upstream-only rule. This rule is ignored in the downstream direction. |
| 535 | // |
| 536 | // 2 This is a downstream-only rule. This rule is ignored in the upstream direction. |
| 537 | // |
| 538 | // Other values: reserved. |
| 539 | // |
| 540 | // Row key: (16 bits) |
| 541 | // |
| 542 | // The row key distinguishes rows in the table. It is the responsibility of the OLT to assign and |
| 543 | // track row keys and content, and to ensure the classification rules are not duplicated and in the |
| 544 | // correct ordering. |
| 545 | // |
| 546 | // For Filter outer priority, Filter outer VID, Filter outer TPID/DEI, Filter inner priority, |
| 547 | // Filter inner VID, Filter inner TPID/DEI, Filter on Extended Criteria, Filter Ethertype, |
| 548 | // Treatment outer priority, Treatment outer VID, Treatment outer TPID/DEI, Treatment inner |
| 549 | // priority, Treatment inner VID, and Treatment inner TPID/DEI values please refer to Received |
| 550 | // frame VLAN tagging operation table in this ME. |
| 551 | // |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 552 | type ExtendedVlanTaggingOperationConfigurationData struct { |
| 553 | ManagedEntityDefinition |
| 554 | Attributes AttributeValueMap |
| 555 | } |
| 556 | |
| 557 | func init() { |
| 558 | extendedvlantaggingoperationconfigurationdataBME = &ManagedEntityDefinition{ |
| 559 | Name: "ExtendedVlanTaggingOperationConfigurationData", |
| 560 | ClassID: 171, |
| 561 | MessageTypes: mapset.NewSetWith( |
| 562 | Create, |
| 563 | Delete, |
| 564 | Get, |
| 565 | GetNext, |
| 566 | Set, |
Chip Boling | 2d51f05 | 2021-02-09 09:04:15 -0600 | [diff] [blame] | 567 | SetTable, |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 568 | ), |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 569 | AllowedAttributeMask: 0xffc0, |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 570 | AttributeDefinitions: AttributeDefinitionMap{ |
Chip Boling | 610117d | 2021-09-09 11:24:34 -0500 | [diff] [blame] | 571 | 0: Uint16Field("ManagedEntityId", PointerAttributeType, 0x0000, 0, mapset.NewSetWith(Read, SetByCreate), false, false, false, 0), |
| 572 | 1: ByteField("AssociationType", EnumerationAttributeType, 0x8000, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 1), |
| 573 | 2: Uint16Field("ReceivedFrameVlanTaggingOperationTableMaxSize", UnsignedIntegerAttributeType, 0x4000, 0, mapset.NewSetWith(Read), false, false, false, 2), |
| 574 | 3: Uint16Field("InputTpid", UnsignedIntegerAttributeType, 0x2000, 34984, mapset.NewSetWith(Read, Write), false, false, false, 3), |
| 575 | 4: Uint16Field("OutputTpid", UnsignedIntegerAttributeType, 0x1000, 34984, mapset.NewSetWith(Read, Write), false, false, false, 4), |
| 576 | 5: ByteField("DownstreamMode", EnumerationAttributeType, 0x0800, 0, mapset.NewSetWith(Read, Write), false, false, false, 5), |
| 577 | 6: TableField("ReceivedFrameVlanTaggingOperationTable", TableAttributeType, 0x0400, TableInfo{nil, 16}, mapset.NewSetWith(Read, Write), false, false, false, 6), |
| 578 | 7: Uint16Field("AssociatedMePointer", PointerAttributeType, 0x0200, 0, mapset.NewSetWith(Read, SetByCreate, Write), false, false, false, 7), |
| 579 | 8: MultiByteField("DscpToPBitMapping", OctetsAttributeType, 0x0100, 24, toOctets("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), mapset.NewSetWith(Read, Write), false, true, false, 8), |
| 580 | 9: ByteField("EnhancedMode", UnsignedIntegerAttributeType, 0x0080, 0, mapset.NewSetWith(Read, SetByCreate), false, true, false, 9), |
| 581 | 10: TableField("EnhancedReceivedFrameClassificationAndProcessingTable", TableAttributeType, 0x0040, TableInfo{nil, 28}, mapset.NewSetWith(Read, Write), false, true, false, 10), |
Chip Boling | 6e27b35 | 2020-02-14 09:10:01 -0600 | [diff] [blame] | 582 | }, |
| 583 | Access: CreatedByOlt, |
| 584 | Support: UnknownSupport, |
| 585 | } |
| 586 | } |
| 587 | |
| 588 | // NewExtendedVlanTaggingOperationConfigurationData (class ID 171) creates the basic |
| 589 | // Managed Entity definition that is used to validate an ME of this type that |
| 590 | // is received from or transmitted to the OMCC. |
| 591 | func NewExtendedVlanTaggingOperationConfigurationData(params ...ParamData) (*ManagedEntity, OmciErrors) { |
| 592 | return NewManagedEntity(*extendedvlantaggingoperationconfigurationdataBME, params...) |
| 593 | } |