diff --git a/voltha/adapters/tibit_olt/EOAM.py b/voltha/adapters/tibit_olt/EOAM.py
deleted file mode 100644
index 69c056e..0000000
--- a/voltha/adapters/tibit_olt/EOAM.py
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/env python
-#--------------------------------------------------------------------------#
-# Copyright (C) 2015 - 2016 by Tibit Communications, Inc.                  #
-# All rights reserved.                                                     #
-#                                                                          #
-#    _______ ____  _ ______                                                #
-#   /_  __(_) __ )(_)_  __/                                                #
-#    / / / / __  / / / /                                                   #
-#   / / / / /_/ / / / /                                                    #
-#  /_/ /_/_____/_/ /_/                                                     #
-#                                                                          #
-#--------------------------------------------------------------------------#
-""" EOAM protocol implementation in scapy """
-
-TIBIT_VERSION_NUMBER = '1.1.4'
-
-import argparse
-import logging
-import time
-from hexdump import hexdump
-
-logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
-from scapy.layers.l2 import Ether, Dot1Q
-from scapy.sendrecv import sendp
-from scapy.fields import PacketField
-from scapy.packet import bind_layers
-
-import fcntl, socket, struct # for get hw address
-
-# TODO should remove import *
-from EOAM_TLV import *
-
-EOAM_MULTICAST_ADDRESS = '01:80:c2:00:00:02'
-IGMP_MULTICAST_ADDRESS = '01:00:5e:00:00:01'   # for test
-
-class EOAM():
-    """ EOAM frame layer """
-    def __init__(self, ctag=None, dryrun=False, stag=None,
-                 verbose=False, etype='8809',
-                 dst=EOAM_MULTICAST_ADDRESS,
-                 hexdump=False, interface='eth0',
-                 sleep=2.0):
-        self.verbose = verbose
-        self.dst = dst
-        self.dryrun = dryrun
-        self.hexdump = hexdump
-        self.interface = interface
-        self.etype = int(etype, 16)
-        self.stag = stag
-        self.ctag = ctag
-        self.sleep = sleep
-        if (self.verbose == True):
-            print("=== Settings ================")
-            print("ctag      = %s" % self.ctag)
-            print("stag      = %s" % self.stag)
-            print("dst       = %s" % self.dst)
-            print("dryrun    = %s" % self.dryrun)
-            print("hexdump   = %s" % self.hexdump)
-            print("interface = %s" % self.interface)
-            print("etype     = 0x%04x" % self.etype)
-            print("verbose   = %s" % self.verbose)
-            print("sleep     = %d" % self.sleep)
-            print("=== END Settings ============")
-
-    def send_frame(self, frame_body):
-        PACKET = Ether()
-        PACKET.dst = self.dst
-        PACKET.src = self.getHwAddr(self.interface)
-        if self.stag:
-            # WARNING: September/2016: This should be 0x88a8, but the Intel 10G
-            # hardware I am currently using does not support receiving a TPID of
-            # 0x88a8. So, I send double CTAGs, and I usually set this to 0x8100.
-            # (NOTE: The Intel hardware can send a TPID of 0x88a8)
-            PACKET.type = 0x8100
-            if self.ctag:
-                PACKET/=Dot1Q(type=0x8100,vlan=int(self.stag))
-                PACKET/=Dot1Q(type=self.etype,vlan=int(self.ctag))
-            else:
-                PACKET/=Dot1Q(type=self.etype,vlan=int(self.stag))
-        else:
-            if self.ctag:
-                PACKET.type = 0x8100
-                PACKET/=Dot1Q(type=self.etype,vlan=int(self.ctag))
-            else:
-                PACKET.type = self.etype
-#            PACKET/=Dot1Q(type=self.etype, vlan=int(self.ctag))
-        PACKET/=SlowProtocolsSubtype()/FlagsBytes()/OAMPDU()
-        PACKET/=frame_body
-        PACKET/=EndOfPDU()
-        if (self.verbose == True):
-            PACKET.show()
-            print '###[ Frame Length %d (before padding) ]###' % len(PACKET)
-        if (self.hexdump == True):
-            print hexdump(str(PACKET))
-        if (self.dryrun != True):
-            sendp(PACKET, iface=self.interface)
-            time.sleep(self.sleep)
-        return PACKET
-
-    def get_request(self, TLV):
-        return self.send_frame(CablelabsOUI()/DPoEOpcode_GetRequest()/TLV)
-
-    def set_request(self, TLV):
-        return self.send_frame(CablelabsOUI()/DPoEOpcode_SetRequest()/TLV)
-
-    def send_multicast_register(self, TLV):
-        '''
-        Note, for mulicast, the standard specifies a register message
-        with ActionFlags of either Register or Deregister
-        '''
-        return self.send_frame(CablelabsOUI()/DPoEOpcode_MulticastRegister()/TLV)
-
-    def set_request_broadcom(self, TLV):
-        return self.send_frame(BroadcomOUI()/DPoEOpcode_SetRequest()/TLV)
-
-    def getHwAddr(self, ifname):
-        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-        info = fcntl.ioctl(s.fileno(), 0x8927,  struct.pack('256s', ifname[:15]))
-        return ':'.join(['%02x' % ord(char) for char in info[18:24]])
-
-
-class EOAMPayload(Packet):
-    name = 'EOAM Payload'
-    fields_desc = [
-        ByteEnumField("subtype", 0x03, SlowProtocolsSubtypeEnum),
-        XShortField("flags", 0x0050),
-        XByteField("opcode", 0xfe),
-        PacketField("body", None, Packet),
-        BitEnumField("type", 0x00, 7, TLV_dictionary),
-        BitField("length", 0x00, 9)
-    ]
-
-bind_layers(Ether, EOAMPayload, type=0x9001)
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser()
-    parser.add_argument('-d', '--dst', dest='dst', action='store', default=EOAM_MULTICAST_ADDRESS,
-                        help='MAC destination (default: %s)' % EOAM_MULTICAST_ADDRESS)
-    parser.add_argument('-e', '--etype', dest='etype', action='store', default='8809',
-                        help='EtherType value (default: 0x8809)')
-    parser.add_argument('-i', '--interface', dest='interface', action='store', default='eth0',
-                        help='ETH interface to send (default: eth0)')
-    parser.add_argument('-s', '--stag', dest='stag', action='store', default=None,
-                        help='STAG value (default: None)')
-    parser.add_argument('-c', '--ctag', dest='ctag', action='store', default=None,
-                        help='CTAG value (default: None)')
-    parser.add_argument('-p', '--sleep', dest='sleep', action='store', default='1.0', type=float,
-                        help='SLEEP time after frame (default: 1.0 secs)')
-    parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=False,
-                        help='verbose frame print out')
-    parser.add_argument('-x', '--hexdump', dest='hexdump', action='store_true', default=False,
-                        help='Hexdump the frame')
-    parser.add_argument('-y', '--dryrun', dest='dryrun', action='store_true', default=False,
-                        help='Dry run test, dont send - just print')
-
-    parser.add_argument('-t', '--test', dest='test', action='store_true', default=False,
-                        help='Run commands under test')
-    parser.add_argument('-r', '--critical', dest='critical', action='store_true', default=False,
-                        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')
-
-    args = parser.parse_args()
-
-    if (args.dryrun == True):
-        args.sleep = 0.0
-
-    eoam = EOAM(
-        dryrun=args.dryrun,
-        dst=args.dst,
-        etype=args.etype,
-        hexdump=args.hexdump,
-        interface=args.interface,
-        stag=args.stag,
-        ctag=args.ctag,
-        verbose=args.verbose,
-        sleep=args.sleep
-        )
-
-    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):
-        print 'WARNING: *** No frames sent, please specify \'test\' or \'critical\', etc.  See --help'
-
-
-    if (args.test == True):
-        print 'SET - Multicast Register Message 01'
-        eoam.send_multicast_register(MulticastRegisterSet(MulticastLink=0x3fe0, UnicastLink=0x1008))
-
-        print 'SET - Multicast Deregister Message 02'
-        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())
-
-    elif (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):
-        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'
-        eoam.set_request(DOLTObject()/
-                         PortIngressRuleHeader(precedence=32)/
-                         PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
-                         PortIngressRuleResultForward()/
-                         PortIngressRuleResultSet(fieldcode=7, value=0x4090)/
-                         PortIngressRuleResultInsert(fieldcode=7)/
-                         PortIngressRuleTerminator()/
-                         AddPortIngressRule())
-
-        eoam.set_request(DOLTObject()/
-                         PortIngressRuleHeader(precedence=32)/
-                         PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
-                         PortIngressRuleResultForward()/
-                         PortIngressRuleResultSet(fieldcode=7, value=0x4090)/
-                         PortIngressRuleResultInsert(fieldcode=7)/
-                         PortIngressRuleTerminator()/
-                         DeletePortIngressRule())
diff --git a/voltha/adapters/tibit_olt/EOAM_TLV.py b/voltha/adapters/tibit_olt/EOAM_TLV.py
deleted file mode 100644
index 00ff2d7..0000000
--- a/voltha/adapters/tibit_olt/EOAM_TLV.py
+++ /dev/null
@@ -1,1072 +0,0 @@
-#--------------------------------------------------------------------------#
-# Copyright (C) 2015 - 2016 by Tibit Communications, Inc.                  #
-# All rights reserved.                                                     #
-#                                                                          #
-#    _______ ____  _ ______                                                #
-#   /_  __(_) __ )(_)_  __/                                                #
-#    / / / / __  / / / /                                                   #
-#   / / / / /_/ / / / /                                                    #
-#  /_/ /_/_____/_/ /_/                                                     #
-#                                                                          #
-#--------------------------------------------------------------------------#
-
-from scapy.packet import Packet
-from scapy.fields import ByteEnumField, XShortField, XByteField, MACField, \
-    ByteField, BitEnumField, BitField
-
-# This library strives to be an implementation of the following standard:
-
-# DPoE-SP-OAMv1.0-IO8-140807 - DPoE OAM Extensions Specifications
-
-# This library may be used with PON devices for
-# configuration and provisioning.
-
-TIBIT_VERSION_NUMBER = '1.1.4'
-
-TLV_dictionary = {
-    0x00: "End EOAMPDU",
-    }
-
-SlowProtocolsSubtypeEnum = {0x03: "OAM"}
-
-### Multicast Action Flags
-MulticastActionFlagsEnum = {
-    0x02: "Deregister",
-    0x03: "Register"
-    }
-
-### Table 17 - DPoE Opcodes
-DPoEOpcodeEnum = {
-    0x01: "Get Request",
-    0x02: "Get Response",
-    0x03: "Set Request",
-    0x04: "Set Response",
-    0x05: "Dynamic IP Multicast Control",
-    0x06: "Multicast Register",
-    0x07: "Multicast Register Response",
-    }
-
-### Table 20 - DPoE Variable Response Codes
-DPoEVariableResponseCodes = {
-    0x80, "No Error",
-    0x81, "Too Long",
-    0x86, "Bad Parameters",
-    0x87, "No Resources",
-    0x88, "System Busy",
-    0xa0, "Undetermined Error",
-    0xa1, "Unsupported",
-    0xa2, "May Be Corrupted",
-    0xa3, "Hardware Failure",
-    0xa4, "Overflow",
-    }
-
-class SlowProtocolsSubtype(Packet):
-    """ Slow Protocols subtype"""
-    name = "Slow Protocols subtype"
-    fields_desc  = [ByteEnumField("subtype", 0x03, SlowProtocolsSubtypeEnum)]
-
-class FlagsBytes(Packet):
-    """ Two Bytes Reserved for 802.3 Flags"""
-    name = "FlagsBytes"
-    fields_desc  = [XShortField("flags", 0x0050)]
-
-class OAMPDU(Packet):
-    """ OAMPDU code: Organization Specific"""
-    name = "OAMPDU code: Organization Specific"
-    fields_desc  = [XByteField("opcode", 0xfe)]
-
-class CablelabsOUI(Packet):
-    """ Organizationally Unique Identifier (Cablelabs)"""
-    name = "Organizationally Unique Identifier (Cablelabs)"
-    fields_desc  = [XByteField("oui0", 0x00),
-                    XByteField("oui1", 0x10),
-                    XByteField("oui2", 0x00)]
-
-class BroadcomOUI(Packet):
-    """ Organizationally Unique Identifier (Broadcom)"""
-    name = "Organizationally Unique Identifier (Broadcom)"
-    fields_desc  = [XByteField("oui0", 0x00),
-                    XByteField("oui1", 0x0D),
-                    XByteField("oui2", 0xB6)]
-
-class DPoEOpcode_GetRequest(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x01, DPoEOpcodeEnum)]
-
-class DPoEOpcode_SetRequest(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x03, DPoEOpcodeEnum)]
-
-class DPoEOpcode_MulticastRegister(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x06, DPoEOpcodeEnum)]
-
-class DPoEOpcode_MulticastRegisterResponse(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x07, DPoEOpcodeEnum)]
-
-class MulticastRegisterSetSumitomo01(Packet):
-    """ Multicast Register: Multicast Register Set Sumitomo 01 """
-    name = "Multicast Register: Multicast Register Set Sumitomo 01"
-    fields_desc = [ByteEnumField("ActionFlags", 0x02, MulticastActionFlagsEnum),
-                   XShortField("MulticastLink", 0xfffe),
-                   XShortField("UnicastLink", 0x43dc),
-                   ]
-
-class MulticastRegisterSetSumitomo02(Packet):
-    """ Multicast Register: Multicast Register Set Sumitomo 02 """
-    name = "Multicast Register: Multicast Register Set Sumitomo 02"
-    fields_desc = [ByteEnumField("ActionFlags", 0x03, MulticastActionFlagsEnum),
-                   XShortField("MulticastLink", 0x43dd),
-                   XShortField("UnicastLink", 0x43dc),
-                   ]
-
-class MulticastRegisterSet(Packet):
-    """ Multicast Register: Multicast Register Set """
-    name = "Multicast Register: Multicast Register Set"
-    fields_desc = [ByteEnumField("ActionFlags", 0x03, MulticastActionFlagsEnum),
-                   XShortField("MulticastLink", 0x0000),
-                   XShortField("UnicastLink", 0x0000),
-                   ]
-####
-#### PORT OBJECTS
-####
-class DONUObject(Packet):
-    """ Object Context: D-ONU Object """
-    name = "Object Context: D-ONU Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0000),
-                   XByteField("length", 1),
-                   XByteField("num", 0)
-                   ]
-
-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)
-                   ]
-
-class NetworkPortObject(Packet):
-    """ Object Context: Network Port Object """
-    name = "Object Context: Network Port Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0001),
-                   XByteField("length", 1),
-                   XByteField("num", 0)
-                   ]
-
-class UnicastLogicalLink(Packet):
-    """ Object Context: Unicast Logical Link """
-    name = "Object Context: Unicast Logical Link"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0002),
-                   XByteField("length", 1),
-                   XByteField("number", 0)
-                   ]
-
-class UserPortObject(Packet):
-    """ Object Context: User Port Object """
-    name = "Object Context: User Port Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0003),
-                   XByteField("length", 1),
-                   XByteField("number", 0)
-                   ]
-
-class QueueObject(Packet):
-    """ Object Context: Queue Object """
-    name = "Object Context: Queue Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0004),
-                   XByteField("length", 2),
-                   XByteField("instance", 0),
-                   XByteField("number", 0)
-                   ]
-
-
-####
-#### 0x09 - BRANCH ATTRIBUTES
-####
-class PhyAdminControl(Packet):
-    """ Variable Descriptor: Phy Admin Control """
-    name = "Variable Descriptor: Phy Admin Control"
-    fields_desc = [XByteField("branch", 0x09),
-                   XShortField("leaf", 0x0005),
-                   ]
-
-class PhyAdminControlEnableSet(Packet):
-    """ Variable Descriptor: Phy Admin Control Enable """
-    name = "Variable Descriptor: Phy Admin Control Enable"
-    fields_desc = [XByteField("branch", 0x09),
-                   XShortField("leaf", 0x0005),
-                   XByteField("length", 1),
-                   XByteField("value", 2)
-                   ]
-
-class PhyAdminControlDisableSet(Packet):
-    """ Variable Descriptor: Phy Admin Control Disable """
-    name = "Variable Descriptor: Phy Admin Control Disable"
-    fields_desc = [XByteField("branch", 0x09),
-                   XShortField("leaf", 0x0005),
-                   XByteField("length", 1),
-                   XByteField("value", 1)
-                   ]
-
-####
-#### 0xd7 - BRANCH ATTRIBUTES
-####
-class DeviceId(Packet):
-    """ Variable Descriptor: Device ID """
-    name = "Variable Descriptor: Device ID"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0002)]
-
-class FirmwareInfo(Packet):
-    """ Variable Descriptor: Firmware Info """
-    name = "Variable Descriptor: Firmware Info"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0003)]
-
-class ChipsetInfo(Packet):
-    """ Variable Descriptor: Chipset Info """
-    name = "Variable Descriptor: Chipset Info"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0004)]
-
-class DateOfManufacture(Packet):
-    """ Variable Descriptor: Date of Manufacture """
-    name = "Variable Descriptor: Date of Manufacture"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0005)]
-
-class MaxLogicalLinks(Packet):
-    """ Variable Descriptor: Max Logical Links """
-    name = "Variable Descriptor: Max Logical Links"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0007)]
-
-class NumberOfNetworkPorts(Packet):
-    """ Variable Descriptor: Number of Network Ports """
-    name = "Variable Descriptor: Number of Network Ports"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0008)]
-
-class NumberOfS1Interfaces(Packet):
-    """ Variable Descriptor: Number of S1 Interfaces """
-    name = "Variable Descriptor: Number of S1 Interfaces"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0009)]
-
-class DONUPacketBuffer(Packet):
-    """ Variable Descriptor: D-ONU Packet Buffer """
-    name = "Variable Descriptor: D-ONU Packet Buffer"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000a)]
-
-class ReportThresholds(Packet):
-    """ Variable Descriptor: Report Thresholds """
-    name = "Variable Descriptor: Report Thresholds"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000b),
-                   ]
-
-class ReportThresholdsSet(Packet):
-    """ Variable Descriptor: Report Thresholds Set """
-    name = "Variable Descriptor: Report Thresholds Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000b),
-                   XByteField("length", 0x0a),
-                   XByteField("num_queue_sets", 4),
-                   XByteField("values", 1),
-                   XShortField("threshold0", 0x800),
-                   XShortField("threshold1", 0x1000),
-                   XShortField("threshold2", 0x1800),
-                   XShortField("threshold3", 0x2000),
-                   ]
-
-class UnicastLogicalLinkReportThresholdsSet(Packet):
-    """ Variable Descriptor: Report Thresholds Unicast Logical Link Set"""
-    name = "Variable Descriptor: Report Thresholds Unicast Logical Link Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000b),
-                   XByteField("length", 0x0a),
-                   XByteField("num_queue_sets", 4),
-                   XByteField("values", 1),
-                   XShortField("threshold0", 0x2800),
-                   XShortField("threshold1", 0x5000),
-                   XShortField("threshold2", 0x7800),
-                   XShortField("threshold3", 0xa000),
-                   ]
-
-class LogicalLinkForwarding(Packet):
-    """ Variable Descriptor: Logical Link Forwarding """
-    name = "Variable Descriptor: Logical Link Forwarding"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000c),
-                   ]
-
-class OamFrameRate(Packet):
-    """ Variable Descriptor: OAM Frame Rate """
-    name = "Variable Descriptor: OAM Frame Rate"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000d),
-                   ]
-
-class OamFrameRateSet(Packet):
-    """ Variable Descriptor: OAM Frame Rate """
-    name = "Variable Descriptor: OAM Frame Rate"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000d),
-                   XByteField("length", 2),
-                   XByteField("max", 12),
-                   XByteField("min", 10),
-                   ]
-
-class OnuManufacturerOrganizationName(Packet):
-    """ Variable Descriptor: ONU Manufacturer Organization Name """
-    name = "Variable Descriptor: ONU Manufacturer Organization Name"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000e),
-                   ]
-
-class FirmwareMfgTimeVaryingControls(Packet):
-    """ Variable Descriptor: Firmware Mfg Time Varying Controls """
-    name = "Variable Descriptor: Firmware Mfg Time Varying Controls"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000f),
-                   ]
-
-class VendorName(Packet):
-    """ Variable Descriptor: Vendor Name """
-    name = "Variable Descriptor: Vendor Name"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0011),
-                   ]
-
-class ModelNumber(Packet):
-    """ Variable Descriptor: Model Number """
-    name = "Variable Descriptor: Model Number"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0012),
-                   ]
-
-class HardwareVersion(Packet):
-    """ Variable Descriptor: Hardware Version """
-    name = "Variable Descriptor: Hardware Version"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0013),
-                   ]
-
-class EponMode(Packet):
-    """ Variable Descriptor: EPON Mode """
-    name = "Variable Descriptor: EPON Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0014),
-                   ]
-
-class DynamicAddressAgeLimit(Packet):
-    """ Variable Descriptor: Dynamic Address Age Limit """
-    name = "Variable Descriptor: Dynamic Address Age Limit"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0102),
-                   ]
-
-class DynamicAddressAgeLimitSet(Packet):
-    """ Variable Descriptor: Dynamic Address Age Limit Set """
-    name = "Variable Descriptor: Dynamic Address Age Limit Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0102),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0000),
-                   ]
-
-class DynamicMacTable(Packet):
-    """ Variable Descriptor: Dynamic MAC Table """
-    name = "Variable Descriptor: Dynamic MAC Table"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0103),
-                   ]
-
-class StaticMacTable(Packet):
-    """ Variable Descriptor: Static MAC Table """
-    name = "Variable Descriptor: Static MAC Table"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0104),
-                   ]
-
-class SourceAddressAdmissionControl(Packet):
-    """ Variable Descriptor: Source Address Admission Control """
-    name = "Variable Descriptor: Source Address Admission Control"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0106),
-                   ]
-
-class SourceAddressAdmissionControlSet(Packet):
-    """ Variable Descriptor: Source Address Admission Control Set """
-    name = "Variable Descriptor: Source Address Admission Control Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0106),
-                   XByteField("length", 1),
-                   XByteField("value", 1),
-                   ]
-
-class MacLearningMinGuarantee(Packet):
-    """ Variable Descriptor: MAC Learning MIN Guarantee """
-    name = "Variable Descriptor: MAC Learning MIN Guarantee"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0107),
-                   ]
-
-class MacLearningMinGuaranteeSet(Packet):
-    """ Variable Descriptor: MAC Learning MIN Guarantee Set """
-    name = "Variable Descriptor: MAC Learning MIN Guarantee Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0107),
-                   XByteField("length", 2),
-                   XShortField("value", 0),
-                   ]
-
-class MacLearningMaxAllowed(Packet):
-    """ Variable Descriptor: MAC Learning MAX Allowed """
-    name = "Variable Descriptor: MAC Learning MAX Allowed"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0108),
-                   ]
-
-class MacLearningMaxAllowedSet(Packet):
-    """ Variable Descriptor: MAC Learning MAX Allowed Set """
-    name = "Variable Descriptor: MAC Learning MAX Allowed Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0108),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0010),
-                   ]
-
-class MacLearningAggregateLimit(Packet):
-    """ Variable Descriptor: MAC Learning Aggregate Limit """
-    name = "Variable Descriptor: MAC Learning Aggregate Limit"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0109),
-                   ]
-
-class MacLearningAggregateLimitSet(Packet):
-    """ Variable Descriptor: MAC Learning Aggregate Limit Set """
-    name = "Variable Descriptor: MAC Learning Aggregate Limit Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0109),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0040),
-                   ]
-
-class FloodUnknown(Packet):
-    """ Variable Descriptor: Flood Unknown """
-    name = "Variable Descriptor: Flood Unknown"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010b),
-                   ]
-
-class FloodUnknownSet(Packet):
-    """ Variable Descriptor: Flood Unknown Set """
-    name = "Variable Descriptor: Flood Unknown Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010b),
-                   XByteField("length", 1),
-                   XByteField("value", 1),
-                   ]
-
-class LocalSwitching(Packet):
-    """ Variable Descriptor: Local Switching """
-    name = "Variable Descriptor: Local Switching"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010c),
-                   ]
-
-class LocalSwitchingSet(Packet):
-    """ Variable Descriptor: Local Switching Set """
-    name = "Variable Descriptor: Local Switching Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010c),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class LLIDQueueConfiguration(Packet):
-    """ Variable Descriptor: LLID Queue Configuration """
-    name = "Variable Descriptor: LLID Queue Configuration"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010d),
-                   ]
-
-class LLIDQueueConfigurationSet(Packet):
-    """ Variable Descriptor: LLID Queue Configuration """
-    name = "Variable Descriptor: LLID Queue Configuration"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010d),
-                   XByteField("length", 6),
-                   XByteField("numLLID", 1),
-                   XByteField("LLID0-numq", 1),
-                   XByteField("l0Q0-size",0xa0),
-                   XByteField("numPort", 1),
-                   XByteField("Port0-numq", 1),
-                   XByteField("p0Q0-size",0xa0),
-                   ]
-
-class FirmwareFilename(Packet):
-    """ Variable Descriptor: Firmware Filename """
-    name = "Variable Descriptor: Firmware Filename"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010e),
-                   ]
-####
-#### 0xD9 - MAC Table Operations - Dynamic and Static
-####
-
-class ClearDynamicMacTable(Packet):
-    """ Variable Descriptor: Clear Dynamic MAC Table """
-    name = "Variable Descriptor: Clear Dynamic MAC Table"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0101),
-                   ]
-
-class AddDynamicMacAddress(Packet):
-    """ Variable Descriptor: Add Dynamic MAC Address """
-    name = "Variable Descriptor: Add Dynamic MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0102),
-                   ]
-
-class DeleteDynamicMacAddress(Packet):
-    """ Variable Descriptor: Delete Dynamic MAC Address """
-    name = "Variable Descriptor: Delete Dynamic MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0103),
-                   ]
-
-class ClearStaticMacTable(Packet):
-    """ Variable Descriptor: Clear Static MAC Table """
-    name = "Variable Descriptor: Clear Static MAC Table"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0104),
-                   ]
-
-class AddStaticMacAddress(Packet):
-    """ Variable Descriptor: Add Static MAC Address """
-    name = "Variable Descriptor: Add Static MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0105),
-                   ByteField("length", 6),
-                   MACField("mac", "01:00:5e:00:00:00"),
-                   ]
-
-class DeleteStaticMacAddress(Packet):
-    """ Variable Descriptor: Delete Static MAC Address """
-    name = "Variable Descriptor: Delete Static MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0106),
-                   ByteField("length", 6),
-                   MACField("mac", "01:00:5e:00:00:00"),
-                   ]
-
-####
-#### 0xd7 - STATISTICS
-####
-
-class RxFrame_512_1023(Packet):
-    """ Variable Descriptor: RxFrame_512_1023 """
-    name = "Variable Descriptor: RxFrame_512_1023"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0208),
-                   ]
-
-class TxFrame_512_1023(Packet):
-    """ Variable Descriptor: TxFrame_512_1023 """
-    name = "Variable Descriptor: TxFrame_512_1023"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x020f),
-                   ]
-
-class FramesDropped(Packet):
-    """ Variable Descriptor: Frames Dropped """
-    name = "Variable Descriptor: Frames Dropped"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0214),
-                   ]
-
-class BytesDropped(Packet):
-    """ Variable Descriptor: Bytes Dropped """
-    name = "Variable Descriptor: Bytes Dropped"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0215),
-                   ]
-
-class TxBytesUnused(Packet):
-    """ Variable Descriptor: Tx Bytes Unused """
-    name = "Variable Descriptor: Tx Bytes Unused"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0217),
-                   ]
-
-class TxL2Errors(Packet):
-    """ Variable Descriptor: TxL2Errors """
-    name = "Variable Descriptor: TxL2Errors"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0235),
-                   ]
-
-class RxL2Errors(Packet):
-    """ Variable Descriptor: RxL2Errors """
-    name = "Variable Descriptor: RxL2Errors"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0236),
-                   ]
-
-####
-#### 0xD7 - Alarm Reporting
-####
-
-class AlarmReporting(Packet):
-    """ Variable Descriptor: Alarm Reporting """
-    name = "Variable Descriptor: Alarm Reporting"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0303),
-                   ]
-
-class AlarmReportingSet(Packet):
-    """ Variable Descriptor: Alarm Reporting Set """
-    name = "Variable Descriptor: Alarm Reporting Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0303),
-                   XByteField("length", 6),
-                   XShortField("LOS", 0x1101),
-                   XShortField("KeyExchange", 0x1201),
-                   XShortField("PortDisbled", 0x2101),
-                   ]
-
-####
-#### 0xD7 - Encryption/ FEC/ and Queue CIR/EIR
-####
-class EncryptionMode(Packet):
-    """ Variable Descriptor: Encryption Mode """
-    name = "Variable Descriptor: Encryption Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0402),
-                   ]
-
-class EncryptionModeSet(Packet):
-    """ Variable Descriptor: Encryption Mode Set """
-    name = "Variable Descriptor: Encryption Mode Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0402),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class IpmcForwardingRuleConfiguration(Packet):
-    """ Variable Descriptor: IPMC Forwarding Rule Configuration """
-    name = "Variable Descriptor: IPMC Forwarding Rule Configuration"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0505),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0000),
-                   ]
-
-class QueueCommittedInformationRate(Packet):
-    """ Variable Descriptor: Queue Committed Information Rate """
-    name = "Variable Descriptor: Queue Committed Information Rate"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0604),
-                   ]
-
-class QueueCommittedInformationRateSet(Packet):
-    """ Variable Descriptor: Queue Committed Information Rate Set """
-    name = "Variable Descriptor: Queue Committed Information Rate Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0604),
-                   XByteField("length", 6),
-                   XShortField("burst", 0x0fff),
-                   XShortField("CIR_UPPER", 0x0000),
-                   XShortField("CIR_LOWER", 0xffff),
-                   ]
-
-class FECMode(Packet):
-    """ Variable Descriptor: FEC Mode """
-    name = "Variable Descriptor: FEC Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0605),
-                   ]
-
-class FECModeSet(Packet):
-    """ Variable Descriptor: FEC Mode """
-    name = "Variable Descriptor: FEC Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0605),
-                   ]
-
-class MediaType(Packet):
-    """ Variable Descriptor: Media Type """
-    name = "Variable Descriptor: Media Type"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0822),
-                   ]
-
-
-####
-#### 0xD7 - Port Ingress Rules
-####
-class PortIngressRule(Packet):
-    """ Variable Descriptor: Port Ingress Rule """
-    name = "Variable Descriptor: Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0501),
-                   ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-class CustomField(Packet):
-    """ Variable Descriptor: Custom Field """
-    name = "Variable Descriptor: Custom Field"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class CustomFieldEtherType(Packet):
-    """ Variable Descriptor: Custom Field EtherType """
-    name = "Variable Descriptor: Custom Field EtherType"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 6),
-                   XByteField("fieldcode", 0x19),
-                   XByteField("layerselect", 2),
-                   XByteField("dwordoffset", 0),
-                   XByteField("lsb", 0),
-                   XByteField("width", 0x10),
-                   XByteField("numclauses", 0),
-                   ]
-
-class CustomFieldGenericL3(Packet):
-    """ Variable Descriptor: Custom Field Generic L3 """
-    name = "Variable Descriptor: Custom Field Generic L3"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 6),
-                   XByteField("fieldcode", 0x1a),
-                   XByteField("layerselect", 8),
-                   XByteField("dwordoffset", 0),
-                   XByteField("lsb", 0x18),
-                   XByteField("width", 0x8),
-                   XByteField("numclauses", 0),
-                   ]
-
-####
-#### 0xD9 - Port Ingress Rules
-####
-
-class ClearPortIngressRules(Packet):
-    """ Variable Descriptor: Clear Port Ingress Rule """
-    name = "Variable Descriptor: Clear Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0501),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class AddPortIngressRule(Packet):
-    """ Variable Descriptor: Add Port Ingress Rule """
-    name = "Variable Descriptor: Add Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 0x80),
-                   XByteField("value", 0),
-                   ]
-
-
-class DeletePortIngressRule(Packet):
-    """ Variable Descriptor: Delete Port Ingress Rule """
-    name = "Variable Descriptor: Delete Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0503),
-                   XByteField("length", 0x80),
-                   XByteField("value", 0),
-                   ]
-
-####
-#### 0xd9 - BRANCH ATTRIBUTES
-####
-
-class EnableUserTraffic(Packet):
-    """ Variable Descriptor: Enable User Traffic """
-    name = "Variable Descriptor: Enable User Traffic"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0601),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class DisableUserTraffic(Packet):
-    """ Variable Descriptor: Disable User Traffic """
-    name = "Variable Descriptor: Disable User Traffic"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0602)]
-
-class LoopbackEnable(Packet):
-    """ Variable Descriptor: Loopback Enable """
-    name = "Variable Descriptor: Loopback Enable"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0603),
-                   XByteField("length", 1),
-                   XByteField("location", 0),
-                   ]
-
-class LoopbackDisable(Packet):
-    """ Variable Descriptor: Loopback Disable """
-    name = "Variable Descriptor: Loopback Disable"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0604),
-                   XByteField("length", 1),
-                   XByteField("location", 0),
-                   ]
-
-class CurrentAlarmSummary(Packet):
-    """ Variable Descriptor: Current Alarm Summary """
-    name = "Variable Descriptor: Current Alarm Summary"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0301)]
-
-
-##
-## Broadcom TLVs
-##
-class Broadcom07_7F_F1_Set01(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 2),
-                   XShortField("value0", 0x0101),
-                   ]
-
-class Broadcom07_7F_F1_Set02(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 7),
-                   XShortField("value0", 0x0201),
-                   XShortField("value1", 0x0000),
-                   XShortField("value2", 0x0107),
-                   XByteField("value3", 0xd0),
-                   ]
-
-class Broadcom07_7F_F1_Set03(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 7),
-                   XShortField("value0", 0x0301),
-                   XShortField("value1", 0x0000),
-                   XShortField("value2", 0x0100),
-                   XByteField("value3", 0xb8),
-                   ]
-
-class Broadcom07_7F_F1_Set04(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 1),
-                   XByteField("value0", 0x00),
-                   ]
-
-class Broadcom07_7F_F6_Set(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff6 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff6"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff6),
-                   XByteField("length", 2),
-                   XShortField("value0", 0x07d0),
-                   ]
-
-###
-### Clause 30 Attributes (0x07)
-###
-class Clause30AttributesMacEnable(Packet):
-    """ Variable Descriptor: Clause 30 Attributes MAC Enable """
-    name = "Variable Descriptor: Clause 30 Attributes MAC Enable"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x001a),
-                   XByteField("length", 1),
-                   XByteField("value", 1),
-                   ]
-
-class EndOfPDU(Packet):
-    name = "End of EOAM PDU"
-    fields_desc = [BitEnumField("type", 0x00, 7, TLV_dictionary),
-                   BitField("length", 0x00, 9)]
diff --git a/voltha/adapters/tibit_olt/tibit_olt.py b/voltha/adapters/tibit_olt/tibit_olt.py
index 094b01d..b2b3f5b 100644
--- a/voltha/adapters/tibit_olt/tibit_olt.py
+++ b/voltha/adapters/tibit_olt/tibit_olt.py
@@ -30,12 +30,13 @@
 
 from common.frameio.frameio import BpfProgramFilter
 from voltha.adapters.interface import IAdapterInterface
-from voltha.adapters.tibit_olt.EOAM import EOAMPayload, DPoEOpcode_SetRequest
-from voltha.adapters.tibit_olt.EOAM_TLV import DOLTObject, \
+from voltha.extensions.eoam.EOAM import EOAMPayload, DPoEOpcode_SetRequest
+from voltha.extensions.eoam.EOAM_TLV import DOLTObject, \
     PortIngressRuleClauseMatchLength02, PortIngressRuleResultForward, \
     PortIngressRuleResultSet, PortIngressRuleResultInsert, \
     PortIngressRuleTerminator, AddPortIngressRule, CablelabsOUI
-from voltha.adapters.tibit_olt.EOAM_TLV import PortIngressRuleHeader
+from voltha.extensions.eoam.EOAM_TLV import PortIngressRuleHeader
+from voltha.extensions.eoam.EOAM_TLV import ClauseSubtypeEnum as Clause
 from voltha.core.flow_decomposer import *
 from voltha.core.logical_device_agent import mac_str_to_tuple
 from voltha.protos.adapter_pb2 import Adapter, AdapterConfig
@@ -49,7 +50,6 @@
     OFPPF_FIBER, OFPPS_LIVE, ofp_switch_features, OFPC_PORT_STATS, \
     OFPC_GROUP_STATS, OFPC_TABLE_STATS, OFPC_FLOW_STATS
 from voltha.registry import registry
-
 log = structlog.get_logger()
 
 # Match on the MGMT VLAN, Priority 7
diff --git a/voltha/adapters/tibit_onu/EOAM.py b/voltha/adapters/tibit_onu/EOAM.py
deleted file mode 100644
index 69c056e..0000000
--- a/voltha/adapters/tibit_onu/EOAM.py
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/usr/bin/env python
-#--------------------------------------------------------------------------#
-# Copyright (C) 2015 - 2016 by Tibit Communications, Inc.                  #
-# All rights reserved.                                                     #
-#                                                                          #
-#    _______ ____  _ ______                                                #
-#   /_  __(_) __ )(_)_  __/                                                #
-#    / / / / __  / / / /                                                   #
-#   / / / / /_/ / / / /                                                    #
-#  /_/ /_/_____/_/ /_/                                                     #
-#                                                                          #
-#--------------------------------------------------------------------------#
-""" EOAM protocol implementation in scapy """
-
-TIBIT_VERSION_NUMBER = '1.1.4'
-
-import argparse
-import logging
-import time
-from hexdump import hexdump
-
-logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
-from scapy.layers.l2 import Ether, Dot1Q
-from scapy.sendrecv import sendp
-from scapy.fields import PacketField
-from scapy.packet import bind_layers
-
-import fcntl, socket, struct # for get hw address
-
-# TODO should remove import *
-from EOAM_TLV import *
-
-EOAM_MULTICAST_ADDRESS = '01:80:c2:00:00:02'
-IGMP_MULTICAST_ADDRESS = '01:00:5e:00:00:01'   # for test
-
-class EOAM():
-    """ EOAM frame layer """
-    def __init__(self, ctag=None, dryrun=False, stag=None,
-                 verbose=False, etype='8809',
-                 dst=EOAM_MULTICAST_ADDRESS,
-                 hexdump=False, interface='eth0',
-                 sleep=2.0):
-        self.verbose = verbose
-        self.dst = dst
-        self.dryrun = dryrun
-        self.hexdump = hexdump
-        self.interface = interface
-        self.etype = int(etype, 16)
-        self.stag = stag
-        self.ctag = ctag
-        self.sleep = sleep
-        if (self.verbose == True):
-            print("=== Settings ================")
-            print("ctag      = %s" % self.ctag)
-            print("stag      = %s" % self.stag)
-            print("dst       = %s" % self.dst)
-            print("dryrun    = %s" % self.dryrun)
-            print("hexdump   = %s" % self.hexdump)
-            print("interface = %s" % self.interface)
-            print("etype     = 0x%04x" % self.etype)
-            print("verbose   = %s" % self.verbose)
-            print("sleep     = %d" % self.sleep)
-            print("=== END Settings ============")
-
-    def send_frame(self, frame_body):
-        PACKET = Ether()
-        PACKET.dst = self.dst
-        PACKET.src = self.getHwAddr(self.interface)
-        if self.stag:
-            # WARNING: September/2016: This should be 0x88a8, but the Intel 10G
-            # hardware I am currently using does not support receiving a TPID of
-            # 0x88a8. So, I send double CTAGs, and I usually set this to 0x8100.
-            # (NOTE: The Intel hardware can send a TPID of 0x88a8)
-            PACKET.type = 0x8100
-            if self.ctag:
-                PACKET/=Dot1Q(type=0x8100,vlan=int(self.stag))
-                PACKET/=Dot1Q(type=self.etype,vlan=int(self.ctag))
-            else:
-                PACKET/=Dot1Q(type=self.etype,vlan=int(self.stag))
-        else:
-            if self.ctag:
-                PACKET.type = 0x8100
-                PACKET/=Dot1Q(type=self.etype,vlan=int(self.ctag))
-            else:
-                PACKET.type = self.etype
-#            PACKET/=Dot1Q(type=self.etype, vlan=int(self.ctag))
-        PACKET/=SlowProtocolsSubtype()/FlagsBytes()/OAMPDU()
-        PACKET/=frame_body
-        PACKET/=EndOfPDU()
-        if (self.verbose == True):
-            PACKET.show()
-            print '###[ Frame Length %d (before padding) ]###' % len(PACKET)
-        if (self.hexdump == True):
-            print hexdump(str(PACKET))
-        if (self.dryrun != True):
-            sendp(PACKET, iface=self.interface)
-            time.sleep(self.sleep)
-        return PACKET
-
-    def get_request(self, TLV):
-        return self.send_frame(CablelabsOUI()/DPoEOpcode_GetRequest()/TLV)
-
-    def set_request(self, TLV):
-        return self.send_frame(CablelabsOUI()/DPoEOpcode_SetRequest()/TLV)
-
-    def send_multicast_register(self, TLV):
-        '''
-        Note, for mulicast, the standard specifies a register message
-        with ActionFlags of either Register or Deregister
-        '''
-        return self.send_frame(CablelabsOUI()/DPoEOpcode_MulticastRegister()/TLV)
-
-    def set_request_broadcom(self, TLV):
-        return self.send_frame(BroadcomOUI()/DPoEOpcode_SetRequest()/TLV)
-
-    def getHwAddr(self, ifname):
-        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-        info = fcntl.ioctl(s.fileno(), 0x8927,  struct.pack('256s', ifname[:15]))
-        return ':'.join(['%02x' % ord(char) for char in info[18:24]])
-
-
-class EOAMPayload(Packet):
-    name = 'EOAM Payload'
-    fields_desc = [
-        ByteEnumField("subtype", 0x03, SlowProtocolsSubtypeEnum),
-        XShortField("flags", 0x0050),
-        XByteField("opcode", 0xfe),
-        PacketField("body", None, Packet),
-        BitEnumField("type", 0x00, 7, TLV_dictionary),
-        BitField("length", 0x00, 9)
-    ]
-
-bind_layers(Ether, EOAMPayload, type=0x9001)
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser()
-    parser.add_argument('-d', '--dst', dest='dst', action='store', default=EOAM_MULTICAST_ADDRESS,
-                        help='MAC destination (default: %s)' % EOAM_MULTICAST_ADDRESS)
-    parser.add_argument('-e', '--etype', dest='etype', action='store', default='8809',
-                        help='EtherType value (default: 0x8809)')
-    parser.add_argument('-i', '--interface', dest='interface', action='store', default='eth0',
-                        help='ETH interface to send (default: eth0)')
-    parser.add_argument('-s', '--stag', dest='stag', action='store', default=None,
-                        help='STAG value (default: None)')
-    parser.add_argument('-c', '--ctag', dest='ctag', action='store', default=None,
-                        help='CTAG value (default: None)')
-    parser.add_argument('-p', '--sleep', dest='sleep', action='store', default='1.0', type=float,
-                        help='SLEEP time after frame (default: 1.0 secs)')
-    parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=False,
-                        help='verbose frame print out')
-    parser.add_argument('-x', '--hexdump', dest='hexdump', action='store_true', default=False,
-                        help='Hexdump the frame')
-    parser.add_argument('-y', '--dryrun', dest='dryrun', action='store_true', default=False,
-                        help='Dry run test, dont send - just print')
-
-    parser.add_argument('-t', '--test', dest='test', action='store_true', default=False,
-                        help='Run commands under test')
-    parser.add_argument('-r', '--critical', dest='critical', action='store_true', default=False,
-                        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')
-
-    args = parser.parse_args()
-
-    if (args.dryrun == True):
-        args.sleep = 0.0
-
-    eoam = EOAM(
-        dryrun=args.dryrun,
-        dst=args.dst,
-        etype=args.etype,
-        hexdump=args.hexdump,
-        interface=args.interface,
-        stag=args.stag,
-        ctag=args.ctag,
-        verbose=args.verbose,
-        sleep=args.sleep
-        )
-
-    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):
-        print 'WARNING: *** No frames sent, please specify \'test\' or \'critical\', etc.  See --help'
-
-
-    if (args.test == True):
-        print 'SET - Multicast Register Message 01'
-        eoam.send_multicast_register(MulticastRegisterSet(MulticastLink=0x3fe0, UnicastLink=0x1008))
-
-        print 'SET - Multicast Deregister Message 02'
-        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())
-
-    elif (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):
-        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'
-        eoam.set_request(DOLTObject()/
-                         PortIngressRuleHeader(precedence=32)/
-                         PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
-                         PortIngressRuleResultForward()/
-                         PortIngressRuleResultSet(fieldcode=7, value=0x4090)/
-                         PortIngressRuleResultInsert(fieldcode=7)/
-                         PortIngressRuleTerminator()/
-                         AddPortIngressRule())
-
-        eoam.set_request(DOLTObject()/
-                         PortIngressRuleHeader(precedence=32)/
-                         PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
-                         PortIngressRuleResultForward()/
-                         PortIngressRuleResultSet(fieldcode=7, value=0x4090)/
-                         PortIngressRuleResultInsert(fieldcode=7)/
-                         PortIngressRuleTerminator()/
-                         DeletePortIngressRule())
diff --git a/voltha/adapters/tibit_onu/EOAM_TLV.py b/voltha/adapters/tibit_onu/EOAM_TLV.py
deleted file mode 100644
index 00ff2d7..0000000
--- a/voltha/adapters/tibit_onu/EOAM_TLV.py
+++ /dev/null
@@ -1,1072 +0,0 @@
-#--------------------------------------------------------------------------#
-# Copyright (C) 2015 - 2016 by Tibit Communications, Inc.                  #
-# All rights reserved.                                                     #
-#                                                                          #
-#    _______ ____  _ ______                                                #
-#   /_  __(_) __ )(_)_  __/                                                #
-#    / / / / __  / / / /                                                   #
-#   / / / / /_/ / / / /                                                    #
-#  /_/ /_/_____/_/ /_/                                                     #
-#                                                                          #
-#--------------------------------------------------------------------------#
-
-from scapy.packet import Packet
-from scapy.fields import ByteEnumField, XShortField, XByteField, MACField, \
-    ByteField, BitEnumField, BitField
-
-# This library strives to be an implementation of the following standard:
-
-# DPoE-SP-OAMv1.0-IO8-140807 - DPoE OAM Extensions Specifications
-
-# This library may be used with PON devices for
-# configuration and provisioning.
-
-TIBIT_VERSION_NUMBER = '1.1.4'
-
-TLV_dictionary = {
-    0x00: "End EOAMPDU",
-    }
-
-SlowProtocolsSubtypeEnum = {0x03: "OAM"}
-
-### Multicast Action Flags
-MulticastActionFlagsEnum = {
-    0x02: "Deregister",
-    0x03: "Register"
-    }
-
-### Table 17 - DPoE Opcodes
-DPoEOpcodeEnum = {
-    0x01: "Get Request",
-    0x02: "Get Response",
-    0x03: "Set Request",
-    0x04: "Set Response",
-    0x05: "Dynamic IP Multicast Control",
-    0x06: "Multicast Register",
-    0x07: "Multicast Register Response",
-    }
-
-### Table 20 - DPoE Variable Response Codes
-DPoEVariableResponseCodes = {
-    0x80, "No Error",
-    0x81, "Too Long",
-    0x86, "Bad Parameters",
-    0x87, "No Resources",
-    0x88, "System Busy",
-    0xa0, "Undetermined Error",
-    0xa1, "Unsupported",
-    0xa2, "May Be Corrupted",
-    0xa3, "Hardware Failure",
-    0xa4, "Overflow",
-    }
-
-class SlowProtocolsSubtype(Packet):
-    """ Slow Protocols subtype"""
-    name = "Slow Protocols subtype"
-    fields_desc  = [ByteEnumField("subtype", 0x03, SlowProtocolsSubtypeEnum)]
-
-class FlagsBytes(Packet):
-    """ Two Bytes Reserved for 802.3 Flags"""
-    name = "FlagsBytes"
-    fields_desc  = [XShortField("flags", 0x0050)]
-
-class OAMPDU(Packet):
-    """ OAMPDU code: Organization Specific"""
-    name = "OAMPDU code: Organization Specific"
-    fields_desc  = [XByteField("opcode", 0xfe)]
-
-class CablelabsOUI(Packet):
-    """ Organizationally Unique Identifier (Cablelabs)"""
-    name = "Organizationally Unique Identifier (Cablelabs)"
-    fields_desc  = [XByteField("oui0", 0x00),
-                    XByteField("oui1", 0x10),
-                    XByteField("oui2", 0x00)]
-
-class BroadcomOUI(Packet):
-    """ Organizationally Unique Identifier (Broadcom)"""
-    name = "Organizationally Unique Identifier (Broadcom)"
-    fields_desc  = [XByteField("oui0", 0x00),
-                    XByteField("oui1", 0x0D),
-                    XByteField("oui2", 0xB6)]
-
-class DPoEOpcode_GetRequest(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x01, DPoEOpcodeEnum)]
-
-class DPoEOpcode_SetRequest(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x03, DPoEOpcodeEnum)]
-
-class DPoEOpcode_MulticastRegister(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x06, DPoEOpcodeEnum)]
-
-class DPoEOpcode_MulticastRegisterResponse(Packet):
-    """ DPoE Opcode"""
-    name = "DPoE Opcode"
-    fields_desc  = [ByteEnumField("opcode", 0x07, DPoEOpcodeEnum)]
-
-class MulticastRegisterSetSumitomo01(Packet):
-    """ Multicast Register: Multicast Register Set Sumitomo 01 """
-    name = "Multicast Register: Multicast Register Set Sumitomo 01"
-    fields_desc = [ByteEnumField("ActionFlags", 0x02, MulticastActionFlagsEnum),
-                   XShortField("MulticastLink", 0xfffe),
-                   XShortField("UnicastLink", 0x43dc),
-                   ]
-
-class MulticastRegisterSetSumitomo02(Packet):
-    """ Multicast Register: Multicast Register Set Sumitomo 02 """
-    name = "Multicast Register: Multicast Register Set Sumitomo 02"
-    fields_desc = [ByteEnumField("ActionFlags", 0x03, MulticastActionFlagsEnum),
-                   XShortField("MulticastLink", 0x43dd),
-                   XShortField("UnicastLink", 0x43dc),
-                   ]
-
-class MulticastRegisterSet(Packet):
-    """ Multicast Register: Multicast Register Set """
-    name = "Multicast Register: Multicast Register Set"
-    fields_desc = [ByteEnumField("ActionFlags", 0x03, MulticastActionFlagsEnum),
-                   XShortField("MulticastLink", 0x0000),
-                   XShortField("UnicastLink", 0x0000),
-                   ]
-####
-#### PORT OBJECTS
-####
-class DONUObject(Packet):
-    """ Object Context: D-ONU Object """
-    name = "Object Context: D-ONU Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0000),
-                   XByteField("length", 1),
-                   XByteField("num", 0)
-                   ]
-
-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)
-                   ]
-
-class NetworkPortObject(Packet):
-    """ Object Context: Network Port Object """
-    name = "Object Context: Network Port Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0001),
-                   XByteField("length", 1),
-                   XByteField("num", 0)
-                   ]
-
-class UnicastLogicalLink(Packet):
-    """ Object Context: Unicast Logical Link """
-    name = "Object Context: Unicast Logical Link"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0002),
-                   XByteField("length", 1),
-                   XByteField("number", 0)
-                   ]
-
-class UserPortObject(Packet):
-    """ Object Context: User Port Object """
-    name = "Object Context: User Port Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0003),
-                   XByteField("length", 1),
-                   XByteField("number", 0)
-                   ]
-
-class QueueObject(Packet):
-    """ Object Context: Queue Object """
-    name = "Object Context: Queue Object"
-    fields_desc = [XByteField("branch", 0xD6),
-                   XShortField("leaf", 0x0004),
-                   XByteField("length", 2),
-                   XByteField("instance", 0),
-                   XByteField("number", 0)
-                   ]
-
-
-####
-#### 0x09 - BRANCH ATTRIBUTES
-####
-class PhyAdminControl(Packet):
-    """ Variable Descriptor: Phy Admin Control """
-    name = "Variable Descriptor: Phy Admin Control"
-    fields_desc = [XByteField("branch", 0x09),
-                   XShortField("leaf", 0x0005),
-                   ]
-
-class PhyAdminControlEnableSet(Packet):
-    """ Variable Descriptor: Phy Admin Control Enable """
-    name = "Variable Descriptor: Phy Admin Control Enable"
-    fields_desc = [XByteField("branch", 0x09),
-                   XShortField("leaf", 0x0005),
-                   XByteField("length", 1),
-                   XByteField("value", 2)
-                   ]
-
-class PhyAdminControlDisableSet(Packet):
-    """ Variable Descriptor: Phy Admin Control Disable """
-    name = "Variable Descriptor: Phy Admin Control Disable"
-    fields_desc = [XByteField("branch", 0x09),
-                   XShortField("leaf", 0x0005),
-                   XByteField("length", 1),
-                   XByteField("value", 1)
-                   ]
-
-####
-#### 0xd7 - BRANCH ATTRIBUTES
-####
-class DeviceId(Packet):
-    """ Variable Descriptor: Device ID """
-    name = "Variable Descriptor: Device ID"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0002)]
-
-class FirmwareInfo(Packet):
-    """ Variable Descriptor: Firmware Info """
-    name = "Variable Descriptor: Firmware Info"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0003)]
-
-class ChipsetInfo(Packet):
-    """ Variable Descriptor: Chipset Info """
-    name = "Variable Descriptor: Chipset Info"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0004)]
-
-class DateOfManufacture(Packet):
-    """ Variable Descriptor: Date of Manufacture """
-    name = "Variable Descriptor: Date of Manufacture"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0005)]
-
-class MaxLogicalLinks(Packet):
-    """ Variable Descriptor: Max Logical Links """
-    name = "Variable Descriptor: Max Logical Links"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0007)]
-
-class NumberOfNetworkPorts(Packet):
-    """ Variable Descriptor: Number of Network Ports """
-    name = "Variable Descriptor: Number of Network Ports"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0008)]
-
-class NumberOfS1Interfaces(Packet):
-    """ Variable Descriptor: Number of S1 Interfaces """
-    name = "Variable Descriptor: Number of S1 Interfaces"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0009)]
-
-class DONUPacketBuffer(Packet):
-    """ Variable Descriptor: D-ONU Packet Buffer """
-    name = "Variable Descriptor: D-ONU Packet Buffer"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000a)]
-
-class ReportThresholds(Packet):
-    """ Variable Descriptor: Report Thresholds """
-    name = "Variable Descriptor: Report Thresholds"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000b),
-                   ]
-
-class ReportThresholdsSet(Packet):
-    """ Variable Descriptor: Report Thresholds Set """
-    name = "Variable Descriptor: Report Thresholds Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000b),
-                   XByteField("length", 0x0a),
-                   XByteField("num_queue_sets", 4),
-                   XByteField("values", 1),
-                   XShortField("threshold0", 0x800),
-                   XShortField("threshold1", 0x1000),
-                   XShortField("threshold2", 0x1800),
-                   XShortField("threshold3", 0x2000),
-                   ]
-
-class UnicastLogicalLinkReportThresholdsSet(Packet):
-    """ Variable Descriptor: Report Thresholds Unicast Logical Link Set"""
-    name = "Variable Descriptor: Report Thresholds Unicast Logical Link Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000b),
-                   XByteField("length", 0x0a),
-                   XByteField("num_queue_sets", 4),
-                   XByteField("values", 1),
-                   XShortField("threshold0", 0x2800),
-                   XShortField("threshold1", 0x5000),
-                   XShortField("threshold2", 0x7800),
-                   XShortField("threshold3", 0xa000),
-                   ]
-
-class LogicalLinkForwarding(Packet):
-    """ Variable Descriptor: Logical Link Forwarding """
-    name = "Variable Descriptor: Logical Link Forwarding"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000c),
-                   ]
-
-class OamFrameRate(Packet):
-    """ Variable Descriptor: OAM Frame Rate """
-    name = "Variable Descriptor: OAM Frame Rate"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000d),
-                   ]
-
-class OamFrameRateSet(Packet):
-    """ Variable Descriptor: OAM Frame Rate """
-    name = "Variable Descriptor: OAM Frame Rate"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000d),
-                   XByteField("length", 2),
-                   XByteField("max", 12),
-                   XByteField("min", 10),
-                   ]
-
-class OnuManufacturerOrganizationName(Packet):
-    """ Variable Descriptor: ONU Manufacturer Organization Name """
-    name = "Variable Descriptor: ONU Manufacturer Organization Name"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000e),
-                   ]
-
-class FirmwareMfgTimeVaryingControls(Packet):
-    """ Variable Descriptor: Firmware Mfg Time Varying Controls """
-    name = "Variable Descriptor: Firmware Mfg Time Varying Controls"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x000f),
-                   ]
-
-class VendorName(Packet):
-    """ Variable Descriptor: Vendor Name """
-    name = "Variable Descriptor: Vendor Name"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0011),
-                   ]
-
-class ModelNumber(Packet):
-    """ Variable Descriptor: Model Number """
-    name = "Variable Descriptor: Model Number"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0012),
-                   ]
-
-class HardwareVersion(Packet):
-    """ Variable Descriptor: Hardware Version """
-    name = "Variable Descriptor: Hardware Version"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0013),
-                   ]
-
-class EponMode(Packet):
-    """ Variable Descriptor: EPON Mode """
-    name = "Variable Descriptor: EPON Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0014),
-                   ]
-
-class DynamicAddressAgeLimit(Packet):
-    """ Variable Descriptor: Dynamic Address Age Limit """
-    name = "Variable Descriptor: Dynamic Address Age Limit"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0102),
-                   ]
-
-class DynamicAddressAgeLimitSet(Packet):
-    """ Variable Descriptor: Dynamic Address Age Limit Set """
-    name = "Variable Descriptor: Dynamic Address Age Limit Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0102),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0000),
-                   ]
-
-class DynamicMacTable(Packet):
-    """ Variable Descriptor: Dynamic MAC Table """
-    name = "Variable Descriptor: Dynamic MAC Table"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0103),
-                   ]
-
-class StaticMacTable(Packet):
-    """ Variable Descriptor: Static MAC Table """
-    name = "Variable Descriptor: Static MAC Table"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0104),
-                   ]
-
-class SourceAddressAdmissionControl(Packet):
-    """ Variable Descriptor: Source Address Admission Control """
-    name = "Variable Descriptor: Source Address Admission Control"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0106),
-                   ]
-
-class SourceAddressAdmissionControlSet(Packet):
-    """ Variable Descriptor: Source Address Admission Control Set """
-    name = "Variable Descriptor: Source Address Admission Control Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0106),
-                   XByteField("length", 1),
-                   XByteField("value", 1),
-                   ]
-
-class MacLearningMinGuarantee(Packet):
-    """ Variable Descriptor: MAC Learning MIN Guarantee """
-    name = "Variable Descriptor: MAC Learning MIN Guarantee"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0107),
-                   ]
-
-class MacLearningMinGuaranteeSet(Packet):
-    """ Variable Descriptor: MAC Learning MIN Guarantee Set """
-    name = "Variable Descriptor: MAC Learning MIN Guarantee Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0107),
-                   XByteField("length", 2),
-                   XShortField("value", 0),
-                   ]
-
-class MacLearningMaxAllowed(Packet):
-    """ Variable Descriptor: MAC Learning MAX Allowed """
-    name = "Variable Descriptor: MAC Learning MAX Allowed"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0108),
-                   ]
-
-class MacLearningMaxAllowedSet(Packet):
-    """ Variable Descriptor: MAC Learning MAX Allowed Set """
-    name = "Variable Descriptor: MAC Learning MAX Allowed Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0108),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0010),
-                   ]
-
-class MacLearningAggregateLimit(Packet):
-    """ Variable Descriptor: MAC Learning Aggregate Limit """
-    name = "Variable Descriptor: MAC Learning Aggregate Limit"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0109),
-                   ]
-
-class MacLearningAggregateLimitSet(Packet):
-    """ Variable Descriptor: MAC Learning Aggregate Limit Set """
-    name = "Variable Descriptor: MAC Learning Aggregate Limit Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0109),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0040),
-                   ]
-
-class FloodUnknown(Packet):
-    """ Variable Descriptor: Flood Unknown """
-    name = "Variable Descriptor: Flood Unknown"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010b),
-                   ]
-
-class FloodUnknownSet(Packet):
-    """ Variable Descriptor: Flood Unknown Set """
-    name = "Variable Descriptor: Flood Unknown Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010b),
-                   XByteField("length", 1),
-                   XByteField("value", 1),
-                   ]
-
-class LocalSwitching(Packet):
-    """ Variable Descriptor: Local Switching """
-    name = "Variable Descriptor: Local Switching"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010c),
-                   ]
-
-class LocalSwitchingSet(Packet):
-    """ Variable Descriptor: Local Switching Set """
-    name = "Variable Descriptor: Local Switching Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010c),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class LLIDQueueConfiguration(Packet):
-    """ Variable Descriptor: LLID Queue Configuration """
-    name = "Variable Descriptor: LLID Queue Configuration"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010d),
-                   ]
-
-class LLIDQueueConfigurationSet(Packet):
-    """ Variable Descriptor: LLID Queue Configuration """
-    name = "Variable Descriptor: LLID Queue Configuration"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010d),
-                   XByteField("length", 6),
-                   XByteField("numLLID", 1),
-                   XByteField("LLID0-numq", 1),
-                   XByteField("l0Q0-size",0xa0),
-                   XByteField("numPort", 1),
-                   XByteField("Port0-numq", 1),
-                   XByteField("p0Q0-size",0xa0),
-                   ]
-
-class FirmwareFilename(Packet):
-    """ Variable Descriptor: Firmware Filename """
-    name = "Variable Descriptor: Firmware Filename"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x010e),
-                   ]
-####
-#### 0xD9 - MAC Table Operations - Dynamic and Static
-####
-
-class ClearDynamicMacTable(Packet):
-    """ Variable Descriptor: Clear Dynamic MAC Table """
-    name = "Variable Descriptor: Clear Dynamic MAC Table"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0101),
-                   ]
-
-class AddDynamicMacAddress(Packet):
-    """ Variable Descriptor: Add Dynamic MAC Address """
-    name = "Variable Descriptor: Add Dynamic MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0102),
-                   ]
-
-class DeleteDynamicMacAddress(Packet):
-    """ Variable Descriptor: Delete Dynamic MAC Address """
-    name = "Variable Descriptor: Delete Dynamic MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0103),
-                   ]
-
-class ClearStaticMacTable(Packet):
-    """ Variable Descriptor: Clear Static MAC Table """
-    name = "Variable Descriptor: Clear Static MAC Table"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0104),
-                   ]
-
-class AddStaticMacAddress(Packet):
-    """ Variable Descriptor: Add Static MAC Address """
-    name = "Variable Descriptor: Add Static MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0105),
-                   ByteField("length", 6),
-                   MACField("mac", "01:00:5e:00:00:00"),
-                   ]
-
-class DeleteStaticMacAddress(Packet):
-    """ Variable Descriptor: Delete Static MAC Address """
-    name = "Variable Descriptor: Delete Static MAC Address"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0106),
-                   ByteField("length", 6),
-                   MACField("mac", "01:00:5e:00:00:00"),
-                   ]
-
-####
-#### 0xd7 - STATISTICS
-####
-
-class RxFrame_512_1023(Packet):
-    """ Variable Descriptor: RxFrame_512_1023 """
-    name = "Variable Descriptor: RxFrame_512_1023"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0208),
-                   ]
-
-class TxFrame_512_1023(Packet):
-    """ Variable Descriptor: TxFrame_512_1023 """
-    name = "Variable Descriptor: TxFrame_512_1023"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x020f),
-                   ]
-
-class FramesDropped(Packet):
-    """ Variable Descriptor: Frames Dropped """
-    name = "Variable Descriptor: Frames Dropped"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0214),
-                   ]
-
-class BytesDropped(Packet):
-    """ Variable Descriptor: Bytes Dropped """
-    name = "Variable Descriptor: Bytes Dropped"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0215),
-                   ]
-
-class TxBytesUnused(Packet):
-    """ Variable Descriptor: Tx Bytes Unused """
-    name = "Variable Descriptor: Tx Bytes Unused"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0217),
-                   ]
-
-class TxL2Errors(Packet):
-    """ Variable Descriptor: TxL2Errors """
-    name = "Variable Descriptor: TxL2Errors"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0235),
-                   ]
-
-class RxL2Errors(Packet):
-    """ Variable Descriptor: RxL2Errors """
-    name = "Variable Descriptor: RxL2Errors"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0236),
-                   ]
-
-####
-#### 0xD7 - Alarm Reporting
-####
-
-class AlarmReporting(Packet):
-    """ Variable Descriptor: Alarm Reporting """
-    name = "Variable Descriptor: Alarm Reporting"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0303),
-                   ]
-
-class AlarmReportingSet(Packet):
-    """ Variable Descriptor: Alarm Reporting Set """
-    name = "Variable Descriptor: Alarm Reporting Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0303),
-                   XByteField("length", 6),
-                   XShortField("LOS", 0x1101),
-                   XShortField("KeyExchange", 0x1201),
-                   XShortField("PortDisbled", 0x2101),
-                   ]
-
-####
-#### 0xD7 - Encryption/ FEC/ and Queue CIR/EIR
-####
-class EncryptionMode(Packet):
-    """ Variable Descriptor: Encryption Mode """
-    name = "Variable Descriptor: Encryption Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0402),
-                   ]
-
-class EncryptionModeSet(Packet):
-    """ Variable Descriptor: Encryption Mode Set """
-    name = "Variable Descriptor: Encryption Mode Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0402),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class IpmcForwardingRuleConfiguration(Packet):
-    """ Variable Descriptor: IPMC Forwarding Rule Configuration """
-    name = "Variable Descriptor: IPMC Forwarding Rule Configuration"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0505),
-                   XByteField("length", 2),
-                   XShortField("value", 0x0000),
-                   ]
-
-class QueueCommittedInformationRate(Packet):
-    """ Variable Descriptor: Queue Committed Information Rate """
-    name = "Variable Descriptor: Queue Committed Information Rate"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0604),
-                   ]
-
-class QueueCommittedInformationRateSet(Packet):
-    """ Variable Descriptor: Queue Committed Information Rate Set """
-    name = "Variable Descriptor: Queue Committed Information Rate Set"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0604),
-                   XByteField("length", 6),
-                   XShortField("burst", 0x0fff),
-                   XShortField("CIR_UPPER", 0x0000),
-                   XShortField("CIR_LOWER", 0xffff),
-                   ]
-
-class FECMode(Packet):
-    """ Variable Descriptor: FEC Mode """
-    name = "Variable Descriptor: FEC Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0605),
-                   ]
-
-class FECModeSet(Packet):
-    """ Variable Descriptor: FEC Mode """
-    name = "Variable Descriptor: FEC Mode"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0605),
-                   ]
-
-class MediaType(Packet):
-    """ Variable Descriptor: Media Type """
-    name = "Variable Descriptor: Media Type"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0822),
-                   ]
-
-
-####
-#### 0xD7 - Port Ingress Rules
-####
-class PortIngressRule(Packet):
-    """ Variable Descriptor: Port Ingress Rule """
-    name = "Variable Descriptor: Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0501),
-                   ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-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),
-        ]
-
-class CustomField(Packet):
-    """ Variable Descriptor: Custom Field """
-    name = "Variable Descriptor: Custom Field"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class CustomFieldEtherType(Packet):
-    """ Variable Descriptor: Custom Field EtherType """
-    name = "Variable Descriptor: Custom Field EtherType"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 6),
-                   XByteField("fieldcode", 0x19),
-                   XByteField("layerselect", 2),
-                   XByteField("dwordoffset", 0),
-                   XByteField("lsb", 0),
-                   XByteField("width", 0x10),
-                   XByteField("numclauses", 0),
-                   ]
-
-class CustomFieldGenericL3(Packet):
-    """ Variable Descriptor: Custom Field Generic L3 """
-    name = "Variable Descriptor: Custom Field Generic L3"
-    fields_desc = [XByteField("branch", 0xD7),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 6),
-                   XByteField("fieldcode", 0x1a),
-                   XByteField("layerselect", 8),
-                   XByteField("dwordoffset", 0),
-                   XByteField("lsb", 0x18),
-                   XByteField("width", 0x8),
-                   XByteField("numclauses", 0),
-                   ]
-
-####
-#### 0xD9 - Port Ingress Rules
-####
-
-class ClearPortIngressRules(Packet):
-    """ Variable Descriptor: Clear Port Ingress Rule """
-    name = "Variable Descriptor: Clear Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0501),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class AddPortIngressRule(Packet):
-    """ Variable Descriptor: Add Port Ingress Rule """
-    name = "Variable Descriptor: Add Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0502),
-                   XByteField("length", 0x80),
-                   XByteField("value", 0),
-                   ]
-
-
-class DeletePortIngressRule(Packet):
-    """ Variable Descriptor: Delete Port Ingress Rule """
-    name = "Variable Descriptor: Delete Port Ingress Rule"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0503),
-                   XByteField("length", 0x80),
-                   XByteField("value", 0),
-                   ]
-
-####
-#### 0xd9 - BRANCH ATTRIBUTES
-####
-
-class EnableUserTraffic(Packet):
-    """ Variable Descriptor: Enable User Traffic """
-    name = "Variable Descriptor: Enable User Traffic"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0601),
-                   XByteField("length", 1),
-                   XByteField("value", 0),
-                   ]
-
-class DisableUserTraffic(Packet):
-    """ Variable Descriptor: Disable User Traffic """
-    name = "Variable Descriptor: Disable User Traffic"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0602)]
-
-class LoopbackEnable(Packet):
-    """ Variable Descriptor: Loopback Enable """
-    name = "Variable Descriptor: Loopback Enable"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0603),
-                   XByteField("length", 1),
-                   XByteField("location", 0),
-                   ]
-
-class LoopbackDisable(Packet):
-    """ Variable Descriptor: Loopback Disable """
-    name = "Variable Descriptor: Loopback Disable"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0604),
-                   XByteField("length", 1),
-                   XByteField("location", 0),
-                   ]
-
-class CurrentAlarmSummary(Packet):
-    """ Variable Descriptor: Current Alarm Summary """
-    name = "Variable Descriptor: Current Alarm Summary"
-    fields_desc = [XByteField("branch", 0xD9),
-                   XShortField("leaf", 0x0301)]
-
-
-##
-## Broadcom TLVs
-##
-class Broadcom07_7F_F1_Set01(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 2),
-                   XShortField("value0", 0x0101),
-                   ]
-
-class Broadcom07_7F_F1_Set02(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 7),
-                   XShortField("value0", 0x0201),
-                   XShortField("value1", 0x0000),
-                   XShortField("value2", 0x0107),
-                   XByteField("value3", 0xd0),
-                   ]
-
-class Broadcom07_7F_F1_Set03(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 7),
-                   XShortField("value0", 0x0301),
-                   XShortField("value1", 0x0000),
-                   XShortField("value2", 0x0100),
-                   XByteField("value3", 0xb8),
-                   ]
-
-class Broadcom07_7F_F1_Set04(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff1 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff1"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff1),
-                   XByteField("length", 1),
-                   XByteField("value0", 0x00),
-                   ]
-
-class Broadcom07_7F_F6_Set(Packet):
-    """ Variable Descriptor: Broadcom 0x07/0x7ff6 """
-    name = "Variable Descriptor: Broadcom 0x07/0x7ff6"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x7ff6),
-                   XByteField("length", 2),
-                   XShortField("value0", 0x07d0),
-                   ]
-
-###
-### Clause 30 Attributes (0x07)
-###
-class Clause30AttributesMacEnable(Packet):
-    """ Variable Descriptor: Clause 30 Attributes MAC Enable """
-    name = "Variable Descriptor: Clause 30 Attributes MAC Enable"
-    fields_desc = [XByteField("branch", 0x07),
-                   XShortField("leaf", 0x001a),
-                   XByteField("length", 1),
-                   XByteField("value", 1),
-                   ]
-
-class EndOfPDU(Packet):
-    name = "End of EOAM PDU"
-    fields_desc = [BitEnumField("type", 0x00, 7, TLV_dictionary),
-                   BitField("length", 0x00, 9)]
diff --git a/voltha/adapters/tibit_onu/tibit_onu.py b/voltha/adapters/tibit_onu/tibit_onu.py
index 1ab620d..f6c88c9 100644
--- a/voltha/adapters/tibit_onu/tibit_onu.py
+++ b/voltha/adapters/tibit_onu/tibit_onu.py
@@ -51,11 +51,11 @@
 
 log = structlog.get_logger()
 
-from EOAM_TLV import AddStaticMacAddress, DeleteStaticMacAddress
-from EOAM_TLV import ClearStaticMacTable
-from EOAM_TLV import DeviceId
-from EOAM import EOAMPayload, CablelabsOUI
-from EOAM import DPoEOpcode_GetRequest, DPoEOpcode_SetRequest
+from voltha.extensions.eoam.EOAM_TLV import AddStaticMacAddress, DeleteStaticMacAddress
+from voltha.extensions.eoam.EOAM_TLV import ClearStaticMacTable
+from voltha.extensions.eoam.EOAM_TLV import DeviceId
+from voltha.extensions.eoam.EOAM import EOAMPayload, CablelabsOUI
+from voltha.extensions.eoam.EOAM import DPoEOpcode_GetRequest, DPoEOpcode_SetRequest
 
 @implementer(IAdapterInterface)
 class TibitOnuAdapter(object):
diff --git a/voltha/extensions/eoam/EOAM.py b/voltha/extensions/eoam/EOAM.py
index 69c056e..b7b6425 100644
--- a/voltha/extensions/eoam/EOAM.py
+++ b/voltha/extensions/eoam/EOAM.py
@@ -200,8 +200,18 @@
         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):
         print 'SET Add Static MAC Address -- User Port Object'
@@ -217,16 +227,8 @@
                          PortIngressRuleHeader(precedence=32)/
                          PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
                          PortIngressRuleResultForward()/
-                         PortIngressRuleResultSet(fieldcode=7, value=0x4090)/
+                         PortIngressRuleResultSet(fieldcode=7, value=4090)/
                          PortIngressRuleResultInsert(fieldcode=7)/
                          PortIngressRuleTerminator()/
                          AddPortIngressRule())
 
-        eoam.set_request(DOLTObject()/
-                         PortIngressRuleHeader(precedence=32)/
-                         PortIngressRuleClauseMatchLength02(fieldcode=3, operator=1, match0=0x88, match1=0x8e)/
-                         PortIngressRuleResultForward()/
-                         PortIngressRuleResultSet(fieldcode=7, value=0x4090)/
-                         PortIngressRuleResultInsert(fieldcode=7)/
-                         PortIngressRuleTerminator()/
-                         DeletePortIngressRule())
diff --git a/voltha/extensions/eoam/EOAM_TLV.py b/voltha/extensions/eoam/EOAM_TLV.py
index 00ff2d7..c0f431c 100644
--- a/voltha/extensions/eoam/EOAM_TLV.py
+++ b/voltha/extensions/eoam/EOAM_TLV.py
@@ -720,6 +720,40 @@
 ####
 #### 0xD7 - Port Ingress Rules
 ####
+ClauseSubtypeEnum = {0x00: "LLID Index",
+                     0x01: "L2 Destination MAC address",
+                     0x02: "L2 Source MAC address",
+                     0x03: "L2 Type/Len",
+                     0x04: "B-DA",
+                     0x05: "B-SA",
+                     0x06: "I-Tag",
+                     0x07: "S-VLAN Tag",
+                     0x08: "C-VLAN Tag",
+                     0x09: "MPLS Label Stack Entry",
+                     0x0a: "IPv4 TOS/IPv6 Traffic Class",
+                     0x0b: "IPv4 TTL/IPv6 Hop Limit",
+                     0x0c: "IPv4/IPv6 Protocol Type",
+                     0x0d: "IPv4 Source Address",
+                     0x0e: "IPv6 Source Address",
+                     0x0f: "IPv4 Destination Address",
+                     0x10: "IPv6 Destination Address",
+                     0x11: "IPv6 Next Header",
+                     0x12: "IPv6 Flow Header",
+                     0x13: "TCP/UDP source port",
+                     0x14: "TCP/UDP destination port",
+                     0x15: "B-Tag",
+                     0x16: "Reserved",
+                     0x17: "Reserved",
+                     0x18: "Custom field 0",
+                     0x19: "Custom field 1",
+                     0x1a: "Custom field 2",
+                     0x1b: "Custom field 3",
+                     0x1c: "Custom field 4",
+                     0x1d: "Custom field 5",
+                     0x1e: "Custom field 6",
+                     0x1f: "Custom field 7",
+                     }
+
 class PortIngressRule(Packet):
     """ Variable Descriptor: Port Ingress Rule """
     name = "Variable Descriptor: Port Ingress Rule"
diff --git a/voltha/extensions/eoam/__init__.py b/voltha/extensions/eoam/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/voltha/extensions/eoam/__init__.py
