Commit 48324676 authored by Shayan Hajipour's avatar Shayan Hajipour
Browse files

enhancement: port support added to ACL installation flow from IETF ACL in NBI...

enhancement: port support added to ACL installation flow from IETF ACL in NBI to gNMI/OpenConfig driver in SBI
parent c44a2bfe
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -63,16 +63,28 @@ class AclHandler(_Handler):
        y_entries = y_set.create_path('acl-entries')
        for entry in rs.get('entries', []):
            seq = int(entry['sequence_id'])
            src = entry['match'].get('src_address', '0.0.0.0/0')
            dst = entry['match'].get('dst_address', '0.0.0.0/0')
            m_ = entry["match"]
            src_address = m_.get('src_address', '0.0.0.0/0')
            dst_address = m_.get('dst_address', '0.0.0.0/0')
            src_port = m_.get("src_port")
            dst_port = m_.get("dst_port")
            act = _TFS_OC_FWD_ACTION[entry['action']['forward_action']]

            y_e = y_entries.create_path(f'acl-entry[sequence-id="{seq}"]')
            y_e.create_path('config/sequence-id', seq)

            y_ipv4 = y_e.create_path('ipv4')
            y_ipv4.create_path('config/source-address', src)
            y_ipv4.create_path('config/destination-address', dst)
            y_ipv4.create_path('config/source-address', src_address)
            y_ipv4.create_path('config/destination-address', dst_address)

            if src_port or dst_port:
                proto = m_.get("protocol")
                y_trans = y_e.create_path("transport")
                if src_port:
                    y_trans.create_path("config/source-port", int(src_port))
                if dst_port:
                    y_trans.create_path("config/destination-port", int(dst_port))
                y_ipv4.create_path('config/protocol', int(proto))

            y_act = y_e.create_path('actions')
            y_act.create_path('config/forwarding-action', act)
+3 −5
Original line number Diff line number Diff line
@@ -39,11 +39,9 @@ class Port(BaseModel):


class Tcp(BaseModel):
    flags: str = ''
    source_port: Port = Field(serialization_alias='source-port', default_factory=lambda: Port())
    destination_port: Port = Field(
        serialization_alias='destination-port', default_factory=lambda: Port()
    )
    flags: Optional[str] = None
    source_port: Optional[Port] = Field(serialization_alias='source-port', default=None)
    destination_port: Optional[Port] = Field(serialization_alias='destination-port', default=None)


class Matches(BaseModel):