diff --git a/voltha/adapters/tibit_olt/tibit_olt.py b/voltha/adapters/tibit_olt/tibit_olt.py
index b836e2f..e2ee432 100644
--- a/voltha/adapters/tibit_olt/tibit_olt.py
+++ b/voltha/adapters/tibit_olt/tibit_olt.py
@@ -424,7 +424,7 @@
                         log.info('#### field.type == ETH_TYPE ####')
                         _type = field.eth_type
                         dn_req /= PortIngressRuleClauseMatchLength02(
-                            fieldcode=3,
+                            fieldcode=ClauseFields['L2 Type/Len'],
                             operator=1,
                             match0=(_type >> 8) & 0xff,
                             match1=_type & 0xff)
@@ -509,7 +509,7 @@
                     if field.type == ETH_TYPE:
                         _type = field.eth_type
                         up_req /= PortIngressRuleClauseMatchLength02(
-                            fieldcode=3,
+                            fieldcode=ClauseFields['L2 Type/Len'],
                             operator=1,
                             match0=(_type >> 8) & 0xff,
                             match1=_type & 0xff)
diff --git a/voltha/extensions/eoam/EOAM.py b/voltha/extensions/eoam/EOAM.py
index b7b6425..a671c4d 100644
--- a/voltha/extensions/eoam/EOAM.py
+++ b/voltha/extensions/eoam/EOAM.py
@@ -159,12 +159,16 @@
                         help='Send the critical OAM set of set_request()')
     parser.add_argument('-ta', '--test_add', dest='test_add', action='store_true', default=False,
                         help='Run commands under test')
-    parser.add_argument('-td', '--test_del', dest='test_del', action='store_true', default=False,
-                        help='Run commands under test')
     parser.add_argument('-tc', '--test_clr', dest='test_clr', action='store_true', default=False,
                         help='Run commands under test')
     parser.add_argument('-te', '--test_eapol', dest='test_eapol', action='store_true', default=False,
                         help='Run commands under test')
+    parser.add_argument('-tu', '--test_upstream', dest='test_upstream', action='store_true', default=False,
+                        help='Run commands under test')
+    parser.add_argument('-td', '--test_downstream', dest='test_downstream', action='store_true', default=False,
+                        help='Run commands under test')
+    parser.add_argument('-tm', '--test_multicast', dest='test_multicast', action='store_true', default=False,
+                        help='Run commands under test')
 
     args = parser.parse_args()
 
@@ -186,9 +190,11 @@
     if (not args.critical
         and not args.test
         and not args.test_add
-        and not args.test_del
         and not args.test_clr
-        and not args.test_eapol):
+        and not args.test_eapol
+        and not args.test_upstream
+        and not args.test_downstream
+        and not args.test_multicast):
         print 'WARNING: *** No frames sent, please specify \'test\' or \'critical\', etc.  See --help'
 
 
@@ -200,29 +206,23 @@
         eoam.send_multicast_register(MulticastRegisterSet(ActionFlags="Deregister",MulticastLink=0x3fe0, UnicastLink=0x1008))
 
     if (args.test_clr == True):
-#        print 'Set - Clear Static MAC Table -- User Port Object'
-#        eoam.set_request(ClearStaticMacTable())
+        print 'Set - Clear Static MAC Table -- User Port Object'
+        eoam.set_request(ClearStaticMacTable())
 
-        print 'Delete - Port Ingress Rule'
-        eoam.set_request(DOLTObject()/
-                         PortIngressRuleHeader(precedence=32)/
-                         PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
-                         PortIngressRuleResultForward()/
-                         PortIngressRuleResultSet(fieldcode=7, value=4090)/
-                         PortIngressRuleResultInsert(fieldcode=7)/
-                         PortIngressRuleTerminator()/
-                         DeletePortIngressRule())
-
-    elif (args.test_add == True):
+    if (args.test_add == True):
         print 'SET Add Static MAC Address -- User Port Object'
         eoam.set_request(AddStaticMacAddress(mac=IGMP_MULTICAST_ADDRESS))
 
-    elif (args.test_del == True):
+        time.sleep(15)
+
         print 'SET Delete Static MAC Address -- User Port Object'
         eoam.set_request(DeleteStaticMacAddress(mac=IGMP_MULTICAST_ADDRESS))
 
     if (args.test_eapol == True):
-        print 'SET - Port Ingress Rule -- User Port Object -- Precedence 32 Match 0x888e'
+        #################################################################################
+        ## EAPOL
+        #################################################################################
+        print 'SET - Port Ingress Rule -- DOLT Port Object -- EAPOL'
         eoam.set_request(DOLTObject()/
                          PortIngressRuleHeader(precedence=32)/
                          PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
@@ -232,3 +232,116 @@
                          PortIngressRuleTerminator()/
                          AddPortIngressRule())
 
+        print 'Delete - Port Ingress Rule -- DOLT Port Object -- EAPOL'
+        eoam.set_request(DOLTObject()/
+                         PortIngressRuleHeader(precedence=32)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
+                         PortIngressRuleResultForward()/
+                         PortIngressRuleResultSet(fieldcode=7, value=4090)/
+                         PortIngressRuleResultInsert(fieldcode=7)/
+                         PortIngressRuleTerminator()/
+                         DeletePortIngressRule())
+
+    if (args.test_upstream == True):
+        #################################################################################
+        ## UPSTREAM
+        #################################################################################
+        ClauseFields = {v: k for k, v in ClauseSubtypeEnum.iteritems()}
+        OperatorFields = {v: k for k, v in RuleOperatorEnum.iteritems()}
+
+        print 'SET - Port Ingress Rule -- OLT Unicast Logical Link -- Upstream Traffic'
+        eoam.set_request(OLTUnicastLogicalLink(unicastvssn="TBIT", unicastlink=0xe2222900)/
+                         PortIngressRuleHeader(precedence=13)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=0,
+                                                            operator=OperatorFields['=='], match0=0x00, match1=0xf1)/
+                         PortIngressRuleResultForward()/
+                         PortIngressRuleResultCopy(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleResultInsert(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=1)/
+                         PortIngressRuleResultSet(fieldcode=ClauseFields['C-VLAN Tag'], value=1000)/
+                         PortIngressRuleResultReplace(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleTerminator()/
+                         AddPortIngressRule())
+
+
+        time.sleep(15)
+
+        print 'DELETE - Port Ingress Rule -- OLT Unicast Logical Link -- Upstream Traffic'
+        eoam.set_request(OLTUnicastLogicalLink(unicastvssn="TBIT", unicastlink=0xe2222900)/
+                         PortIngressRuleHeader(precedence=13)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=0,
+                                                            operator=OperatorFields['=='], match0=0x00, match1=0xf1)/
+                         PortIngressRuleResultForward()/
+                         PortIngressRuleResultCopy(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleResultInsert(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=1)/
+                         PortIngressRuleResultSet(fieldcode=ClauseFields['C-VLAN Tag'], value=1000)/
+                         PortIngressRuleResultReplace(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleTerminator()/
+                         DeletePortIngressRule())
+
+    if (args.test_downstream == True):
+        #################################################################################
+        ## DOWNSTREAM
+        #################################################################################
+        ClauseFields = {v: k for k, v in ClauseSubtypeEnum.iteritems()}
+        OperatorFields = {v: k for k, v in RuleOperatorEnum.iteritems()}
+
+        print 'SET - Port Ingress Rule -- NNI Port Object -- Downstream Traffic'
+        eoam.set_request(NetworkToNetworkPortObject()/
+                         PortIngressRuleHeader(precedence=13)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=0,
+                                                            operator=OperatorFields['=='], match0=0x0f, match1=0xa0)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=1,
+                                                            operator=OperatorFields['=='], match0=0x00, match1=0xf1)/
+                         PortIngressRuleResultOLTQueue(unicastvssn="TBIT", unicastlink=0xe2222900)/
+                         PortIngressRuleResultForward()/
+                         PortIngressRuleResultDelete(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleTerminator()/
+                         AddPortIngressRule())
+
+
+        time.sleep(15)
+
+        print 'DELETE - Port Ingress Rule -- NNI Port Object -- Downstream Traffic'
+        eoam.set_request(NetworkToNetworkPortObject()/
+                         PortIngressRuleHeader(precedence=13)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=0,
+                                                            operator=OperatorFields['=='], match0=0x0f, match1=0xa0)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=1,
+                                                            operator=OperatorFields['=='], match0=0x00, match1=0xf1)/
+                         PortIngressRuleResultOLTQueue(unicastvssn="TBIT", unicastlink=0xe2222900)/
+                         PortIngressRuleResultForward()/
+                         PortIngressRuleResultDelete(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleTerminator()/
+                         DeletePortIngressRule())
+
+    if (args.test_multicast == True):
+        #################################################################################
+        ## MULTICAST
+        #################################################################################
+        ClauseFields = {v: k for k, v in ClauseSubtypeEnum.iteritems()}
+        OperatorFields = {v: k for k, v in RuleOperatorEnum.iteritems()}
+
+        print 'SET - Port Ingress Rule -- NNI Port Object -- Downstream Multicast Traffic'
+        eoam.set_request(NetworkToNetworkPortObject()/
+                         PortIngressRuleHeader(precedence=13)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=0,
+                                                            operator=OperatorFields['=='], match0=0x00, match1=0x8c)/
+                         PortIngressRuleResultOLTBroadcastQueue()/
+                         PortIngressRuleResultForward()/
+                         PortIngressRuleResultDelete(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleTerminator()/
+                         AddPortIngressRule())
+
+
+        time.sleep(15)
+
+        print 'DELETE - Port Ingress Rule -- NNI Port Object -- Downstream Multicast Traffic'
+        eoam.set_request(NetworkToNetworkPortObject()/
+                         PortIngressRuleHeader(precedence=13)/
+                         PortIngressRuleClauseMatchLength02(fieldcode=ClauseFields['C-VLAN Tag'], fieldinstance=0,
+                                                            operator=OperatorFields['=='], match0=0x00, match1=0x8c)/
+                         PortIngressRuleResultOLTBroadcastQueue()/
+                         PortIngressRuleResultForward()/
+                         PortIngressRuleResultDelete(fieldcode=ClauseFields['C-VLAN Tag'])/
+                         PortIngressRuleTerminator()/
+                         DeletePortIngressRule())
diff --git a/voltha/extensions/eoam/EOAM_TLV.py b/voltha/extensions/eoam/EOAM_TLV.py
index 9598967..0558aa4 100644
--- a/voltha/extensions/eoam/EOAM_TLV.py
+++ b/voltha/extensions/eoam/EOAM_TLV.py
@@ -13,6 +13,7 @@
 from scapy.packet import Packet
 from scapy.fields import ByteEnumField, XShortField, XByteField, MACField, \
     ByteField, BitEnumField, BitField
+from scapy.fields import XLongField, StrField, XIntField
 
 # This library strives to be an implementation of the following standard:
 
@@ -21,6 +22,13 @@
 # This library may be used with PON devices for
 # configuration and provisioning.
 
+## Note on Deviations:
+
+## Tibit endeavors to use DPoE OAM for not only communicating with DpOE ONUs,
+## but also to communicate with the Tibit OLT Microplug.  In places where this
+## document deviates from the DPoE standard for ONUs, Tibit has added a comment
+## __TIBIT_OLT_OAM__
+
 TIBIT_VERSION_NUMBER = '1.1.4'
 
 TLV_dictionary = {
@@ -141,16 +149,17 @@
     fields_desc = [XByteField("branch", 0xD6),
                    XShortField("leaf", 0x0000),
                    XByteField("length", 1),
-                   XByteField("num", 0)
+                   XByteField("number", 0)
                    ]
 
+# __TIBIT_OLT_OAM__: Defined by Tibit
 class DOLTObject(Packet):
     """ Object Context: D-OLT Object """
     name = "Object Context: D-OLT Object"
     fields_desc = [XByteField("branch", 0xD6),
                    XShortField("leaf", 0x0000),
                    XByteField("length", 1),
-                   XByteField("num", 0)
+                   XByteField("number", 0)
                    ]
 
 class NetworkPortObject(Packet):
@@ -159,16 +168,17 @@
     fields_desc = [XByteField("branch", 0xD6),
                    XShortField("leaf", 0x0001),
                    XByteField("length", 1),
-                   XByteField("num", 0)
+                   XByteField("number", 0)
                    ]
 
+# __TIBIT_OLT_OAM__: Defined by Tibit
 class PonPortObject(Packet):
     """ Object Context: PON Port Object """
     name = "Object Context: PON Port Object"
     fields_desc = [XByteField("branch", 0xD6),
                    XShortField("leaf", 0x0001),
                    XByteField("length", 1),
-                   XByteField("num", 1)
+                   XByteField("number", 0)
                    ]
 
 class UnicastLogicalLink(Packet):
@@ -180,6 +190,29 @@
                    XByteField("number", 0)
                    ]
 
+# __TIBIT_OLT_OAM__: Defined by Tibit
+class OLTUnicastLogicalLink(Packet):
+    """ Object Context: OLT Unicast Logical Link """
+    name = "Object Context: OLT Unicast Logical Link"
+    fields_desc = [XByteField("branch", 0xD6),
+                   XShortField("leaf", 0x000a),
+                   XByteField("length", 10),
+                   XByteField("pon", 0),
+                   StrField("unicastvssn", "TBIT"),
+                   XIntField("unicastlink", 0x00000000),
+                   XByteField("pad", 0),
+                   ]
+
+# __TIBIT_OLT_OAM__: Defined by Tibit
+class NetworkToNetworkPortObject(Packet):
+    """ Object Context: Network-to-Network (NNI) Port Object """
+    name = "Object Context: Network-to-Network (NNI) Port Object"
+    fields_desc = [XByteField("branch", 0xD6),
+                   XShortField("leaf", 0x0003),
+                   XByteField("length", 1),
+                   XByteField("number", 0)
+                   ]
+
 class UserPortObject(Packet):
     """ Object Context: User Port Object """
     name = "Object Context: User Port Object"
@@ -763,6 +796,16 @@
                      0x1f: "Custom field 7",
                      }
 
+RuleOperatorEnum = { 0x00: "F",             #False
+                     0x01: "==",
+                     0x02: "!=",
+                     0x03: "<=",
+                     0x04: ">=",
+                     0x05: "exists",
+                     0x06: "!exist",
+                     0x07: "T",
+                     }
+
 class PortIngressRule(Packet):
     """ Variable Descriptor: Port Ingress Rule """
     name = "Variable Descriptor: Port Ingress Rule"
@@ -773,162 +816,222 @@
 class PortIngressRuleHeader(Packet):
     """ Variable Descriptor: Port Ingress Rule Header """
     name = "Variable Descriptor: Port Ingress Rule Header"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 2),
-        XByteField("header", 1),
-        XByteField("precedence", 00),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 2),
+                   XByteField("header", 1),
+                   XByteField("precedence", 00),
+                   ]
 
 class PortIngressRuleClauseMatchLength00(Packet):
     """ Variable Descriptor: Port Ingress Rule Clause """
     name = "Variable Descriptor: Port Ingress Rule Clause"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 7),
-        XByteField("clause", 2),
-        XByteField("fieldcode", 0),
-        XByteField("fieldinstance", 0),
-        XByteField("msbmask", 0),
-        XByteField("lsbmask", 0),
-        XByteField("operator", 0),
-        XByteField("matchlength", 0),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 7),
+                   XByteField("clause", 2),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   XByteField("msbmask", 0),
+                   XByteField("lsbmask", 0),
+                   XByteField("operator", 0),
+                   XByteField("matchlength", 0),
+                   ]
 
 class PortIngressRuleClauseMatchLength01(Packet):
     """ Variable Descriptor: Port Ingress Rule Clause """
     name = "Variable Descriptor: Port Ingress Rule Clause"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 8),
-        XByteField("clause", 2),
-        XByteField("fieldcode", 0),
-        XByteField("fieldinstance", 0),
-        XByteField("msbmask", 0),
-        XByteField("lsbmask", 0),
-        XByteField("operator", 0),
-        XByteField("matchlength", 1),
-        XByteField("match0", 0),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 8),
+                   XByteField("clause", 2),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   XByteField("msbmask", 0),
+                   XByteField("lsbmask", 0),
+                   XByteField("operator", 0),
+                   XByteField("matchlength", 1),
+                   XByteField("match0", 0),
+                   ]
 
 class PortIngressRuleClauseMatchLength02(Packet):
     """ Variable Descriptor: Port Ingress Rule Clause """
     name = "Variable Descriptor: Port Ingress Rule Clause"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 9),
-        XByteField("clause", 2),
-        XByteField("fieldcode", 0),
-        XByteField("fieldinstance", 0),
-        XByteField("msbmask", 0),
-        XByteField("lsbmask", 0),
-        XByteField("operator", 0),
-        XByteField("matchlength", 2),
-        XByteField("match0", 0),
-        XByteField("match1", 0),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 9),
+                   XByteField("clause", 2),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   XByteField("msbmask", 0),
+                   XByteField("lsbmask", 0),
+                   XByteField("operator", 0),
+                   XByteField("matchlength", 2),
+                   XByteField("match0", 0),
+                   XByteField("match1", 0),
+                   ]
 
 
 class PortIngressRuleClauseMatchLength06(Packet):
     """ Variable Descriptor: Port Ingress Rule Clause """
     name = "Variable Descriptor: Port Ingress Rule Clause"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 13),
-        XByteField("clause", 2),
-        XByteField("fieldcode", 0),
-        XByteField("fieldinstance", 0),
-        XByteField("msbmask", 0),
-        XByteField("lsbmask", 0),
-        XByteField("operator", 0),
-        XByteField("matchlength", 6),
-        XByteField("match0", 0x01),
-        XByteField("match1", 0x80),
-        XByteField("match2", 0xc2),
-        XByteField("match3", 0x00),
-        XByteField("match4", 0x00),
-        XByteField("match5", 0x00),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 13),
+                   XByteField("clause", 2),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   XByteField("msbmask", 0),
+                   XByteField("lsbmask", 0),
+                   XByteField("operator", 0),
+                   XByteField("matchlength", 6),
+                   XByteField("match0", 0x01),
+                   XByteField("match1", 0x80),
+                   XByteField("match2", 0xc2),
+                   XByteField("match3", 0x00),
+                   XByteField("match4", 0x00),
+                   XByteField("match5", 0x00),
+                   ]
 
 class PortIngressRuleResultForward(Packet):
     """ Variable Descriptor: Port Ingress Rule Result Forward """
     name = "Variable Descriptor: Port Ingress Rule Result Forward"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 2),
-        XByteField("result", 3),
-        XByteField("forward", 2),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 2),
+                   XByteField("result", 3),
+                   XByteField("forward", 2),
+                   ]
 
 class PortIngressRuleResultDiscard(Packet):
     """ Variable Descriptor: Port Ingress Rule Result Discard """
     name = "Variable Descriptor: Port Ingress Rule Result Discard"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 2),
-        XByteField("result", 3),
-        XByteField("discard", 1),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 2),
+                   XByteField("result", 3),
+                   XByteField("discard", 1),
+                   ]
 
 class PortIngressRuleResultQueue(Packet):
     """ Variable Descriptor: Port Ingress Rule Result Queue """
     name = "Variable Descriptor: Port Ingress Rule Result Queue"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 6),
-        XByteField("result", 3),
-        XByteField("queuerule", 3),
-        XShortField("objecttype", 0x0000),
-        XByteField("instance", 0),
-        XByteField("queuenum", 0),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 6),
+                   XByteField("result", 3),
+                   XByteField("queuerule", 3),
+                   XShortField("objecttype", 0x0000),
+                   XByteField("instance", 0),
+                   XByteField("queuenum", 0),
+                   ]
+
+# __TIBIT_OLT_OAM__: Defined by Tibit
+class PortIngressRuleResultOLTQueue(Packet):
+    """ Variable Descriptor: Port Ingress Rule Result OLT Queue """
+    name = "Variable Descriptor: Port Ingress Rule Result OLT Queue"
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 15),
+                   XByteField("result", 3),
+                   XByteField("oltqueuerule", 0x13),
+                   XShortField("objecttype", 0x0001),
+                   XByteField("instance", 0),
+                   XByteField("pon", 0),
+                   StrField("unicastvssn", "TBIT"),
+                   XIntField("unicastlink", 0xe2222900),
+                   XByteField("pad", 0),
+                   ]
+
+# __TIBIT_OLT_OAM__: Defined by Tibit
+class PortIngressRuleResultOLTBroadcastQueue(Packet):
+    """ Variable Descriptor: Port Ingress Rule Result OLT Broadcast Queue """
+    name = "Variable Descriptor: Port Ingress Rule Result OLT Broadcast Queue"
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 15),
+                   XByteField("result", 3),
+                   XByteField("oltqueuerule", 0x13),
+                   XShortField("objecttype", 0x0001),
+                   XByteField("instance", 0),
+                   XByteField("pon", 0),
+                   XLongField("broadcast", 0xffffffffffff0000),
+                   XByteField("pad", 0),
+                   ]
 
 class PortIngressRuleResultSet(Packet):
     """ Variable Descriptor: Port Ingress Rule Result Set """
     name = "Variable Descriptor: Port Ingress Rule Result Set"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 8),
-        XByteField("result", 3),
-        XByteField("set", 4),
-        XByteField("fieldcode", 0),
-        XByteField("fieldinstance", 0),
-        XByteField("msbmask", 0),
-        XByteField("lsbmask", 0),
-        XShortField("value", 0),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 8),
+                   XByteField("result", 3),
+                   XByteField("set", 4),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   XByteField("msbmask", 0),
+                   XByteField("lsbmask", 0),
+                   XShortField("value", 0),
+                   ]
+
+class PortIngressRuleResultCopy(Packet):
+    """ Variable Descriptor: Port Ingress Rule Result Copy """
+    name = "Variable Descriptor: Port Ingress Rule Result Copy"
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 6),
+                   XByteField("result", 3),
+                   XByteField("copy", 5),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   XByteField("msbmask", 0),
+                   XByteField("lsbmask", 0),
+                   ]
+
+class PortIngressRuleResultDelete(Packet):
+    """ Variable Descriptor: Port Ingress Rule Result Delete """
+    name = "Variable Descriptor: Port Ingress Rule Result Delete"
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 4),
+                   XByteField("result", 3),
+                   XByteField("delete", 6),
+                   XByteField("fieldcode", 0),
+                   XByteField("instance", 0),
+                   ]
 
 class PortIngressRuleResultInsert(Packet):
     """ Variable Descriptor: Port Ingress Rule Result Insert """
     name = "Variable Descriptor: Port Ingress Rule Result Insert"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 4),
-        XByteField("result", 3),
-        XByteField("insert", 7),
-        XByteField("fieldcode", 0),
-        XByteField("fieldinstance", 0),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 4),
+                   XByteField("result", 3),
+                   XByteField("insert", 7),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   ]
+
+class PortIngressRuleResultReplace(Packet):
+    """ Variable Descriptor: Port Ingress Rule Result Replace """
+    name = "Variable Descriptor: Port Ingress Rule Result Replace"
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 4),
+                   XByteField("result", 3),
+                   XByteField("replace", 8),
+                   XByteField("fieldcode", 0),
+                   XByteField("fieldinstance", 0),
+                   ]
 
 class PortIngressRuleTerminator(Packet):
     """ Variable Descriptor: Port Ingress Rule Terminator """
     name = "Variable Descriptor: Port Ingress Rule Terminator"
-    fields_desc = [
-        XByteField("branch", 0xD7),
-        XShortField("leaf", 0x0501),
-        ByteField("length", 1),
-        XByteField("terminator", 0),
-        ]
+    fields_desc = [XByteField("branch", 0xD7),
+                   XShortField("leaf", 0x0501),
+                   ByteField("length", 1),
+                   XByteField("terminator", 0),
+                   ]
 
 class CustomField(Packet):
     """ Variable Descriptor: Custom Field """
