# Crown Copyright (C) Dstl 2022. DEFCON 703. Shared in confidence. """A class that implements an access control list rule.""" class ACLRule: """Access Control List Rule class.""" def __init__(self, _permission, _source_ip, _dest_ip, _protocol, _port): """Init. Args: _permission: The permission (ALLOW or DENY) _source_ip: The source IP address _dest_ip: The destination IP address _protocol: The rule protocol _port: The rule port """ self.permission = _permission self.source_ip = _source_ip self.dest_ip = _dest_ip self.protocol = _protocol self.port = _port def __hash__(self): """Override the hash function. Returns: Returns hash of core parameters. """ return hash( ( self.permission, self.source_ip, self.dest_ip, self.protocol, self.port, ) ) def get_permission(self): """Gets the permission attribute. Returns: Returns permission attribute """ return self.permission def get_source_ip(self): """Gets the source IP address attribute. Returns: Returns source IP address attribute """ return self.source_ip def get_dest_ip(self): """Gets the desintation IP address attribute. Returns: Returns destination IP address attribute """ return self.dest_ip def get_protocol(self): """Gets the protocol attribute. Returns: Returns protocol attribute """ return self.protocol def get_port(self): """Gets the port attribute. Returns: Returns port attribute """ return self.port