VOL-2583 adding "IPv4MulticastAddressTable" frame to omci_entities.py .
This entity using by Multicast GEM Interworking TP.
Change-Id: I4d64cc2b2ded55e94d24b4f5fca0e69b560b2679
diff --git a/VERSION b/VERSION
index d245ee8..d3bec23 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.3.19
+2.3.20_dev
diff --git a/pyvoltha/adapters/extensions/omci/omci_entities.py b/pyvoltha/adapters/extensions/omci/omci_entities.py
index 3df13e1..930c5d0 100644
--- a/pyvoltha/adapters/extensions/omci/omci_entities.py
+++ b/pyvoltha/adapters/extensions/omci/omci_entities.py
@@ -523,6 +523,38 @@
mandatory_operations = {OP.Get, OP.Set}
+class IPv4MulticastAddressTable(Packet):
+ name = "IPv4MulticastAddressTable"
+ fields_desc = [
+ BitField("gem_port_id", 0, 2),
+ BitField("secondary_key", 0, 2),
+ IPField("multicast_ip_range_start", None),
+ IPField("multicast_ip_range_stop", None)
+ ]
+
+ def to_json(self):
+ return json.dumps(self.fields, separators=(',', ':'))
+
+ def index(self):
+ return b'%02d' % (self.fields.get('gem_port_id',0)) + \
+ b'%03d' % (self.fields.get('secondary_key',0)) + \
+ b'%01d' % (self.fields.get('multicast_ip_range_start',0)) + \
+ b'%03d' % (self.fields.get('multicast_ip_range_stop',0))
+
+ def is_delete(self):
+ return self.fields.get('gem_port_id',0) == 0x1fff and \
+ self.fields.get('secondary_key',0) == 0x1fff and \
+ self.fields.get('multicast_ip_range_start',0) == 0x1fff and \
+ self.fields.get('multicast_ip_range_stop',0) == 0x1fff
+
+ def delete(self):
+ self.fields['gem_port_id'] = 0x1fff
+ self.fields['secondary_key'] = 0x1fff
+ self.fields['multicast_ip_range_start'] = 0x1fff
+ self.fields['multicast_ip_range_stop'] = 0x1fff
+ return self
+
+
class OntPowerShedding(EntityClass):
class_id = 133
attributes = [
@@ -957,6 +989,8 @@
ECA(ShortField("gal_profile_pointer", None), {AA.R, AA.W, AA.SBC}),
ECA(ByteField("gal_loopback_configuration", None), {AA.R, AA.W, AA.SBC},
deprecated=True),
+ ECA(OmciTableField(PacketLenField("ipv4_multicast_address_table", None, IPv4MulticastAddressTable,
+ length_from=lambda pkt: 12)), {AA.R, AA.W})
# TODO add multicast_address_table here (page 85 of spec.)
# ECA(...("multicast_address_table", None), {AA.R, AA.W})
]