from enum import Enum


class Op3CmdType(Enum):
    IP_FW_TABLE_XADD = 86
    IP_FW_TABLE_XDEL = 87
    IP_FW_TABLE_XGETSIZE = 88
    IP_FW_TABLE_XLIST = 89
    IP_FW_TABLE_XDESTROY = 90
    IP_FW_TABLES_XLIST = 92
    IP_FW_TABLE_XINFO = 93
    IP_FW_TABLE_XFLUSH = 94
    IP_FW_TABLE_XCREATE = 95
    IP_FW_TABLE_XMODIFY = 96
    IP_FW_XGET = 97
    IP_FW_XADD = 98
    IP_FW_XDEL = 99
    IP_FW_XMOVE = 100
    IP_FW_XZERO = 101
    IP_FW_XRESETLOG = 102
    IP_FW_SET_SWAP = 103
    IP_FW_SET_MOVE = 104
    IP_FW_SET_ENABLE = 105
    IP_FW_TABLE_XFIND = 106
    IP_FW_XIFLIST = 107
    IP_FW_TABLES_ALIST = 108
    IP_FW_TABLE_XSWAP = 109
    IP_FW_TABLE_VLIST = 110
    IP_FW_NAT44_XCONFIG = 111
    IP_FW_NAT44_DESTROY = 112
    IP_FW_NAT44_XGETCONFIG = 113
    IP_FW_NAT44_LIST_NAT = 114
    IP_FW_NAT44_XGETLOG = 115
    IP_FW_DUMP_SOPTCODES = 116
    IP_FW_DUMP_SRVOBJECTS = 117
    IP_FW_NAT64STL_CREATE = 130
    IP_FW_NAT64STL_DESTROY = 131
    IP_FW_NAT64STL_CONFIG = 132
    IP_FW_NAT64STL_LIST = 133
    IP_FW_NAT64STL_STATS = 134
    IP_FW_NAT64STL_RESET_STATS = 135
    IP_FW_NAT64LSN_CREATE = 140
    IP_FW_NAT64LSN_DESTROY = 141
    IP_FW_NAT64LSN_CONFIG = 142
    IP_FW_NAT64LSN_LIST = 143
    IP_FW_NAT64LSN_STATS = 144
    IP_FW_NAT64LSN_LIST_STATES = 145
    IP_FW_NAT64LSN_RESET_STATS = 146
    IP_FW_NPTV6_CREATE = 150
    IP_FW_NPTV6_DESTROY = 151
    IP_FW_NPTV6_CONFIG = 152
    IP_FW_NPTV6_LIST = 153
    IP_FW_NPTV6_STATS = 154
    IP_FW_NPTV6_RESET_STATS = 155
    IP_FW_NAT64CLAT_CREATE = 160
    IP_FW_NAT64CLAT_DESTROY = 161
    IP_FW_NAT64CLAT_CONFIG = 162
    IP_FW_NAT64CLAT_LIST = 163
    IP_FW_NAT64CLAT_STATS = 164
    IP_FW_NAT64CLAT_RESET_STATS = 165


class IpFwTableLookupType(Enum):
    LOOKUP_DST_IP = 0
    LOOKUP_SRC_IP = 1
    LOOKUP_DST_PORT = 2
    LOOKUP_SRC_PORT = 3
    LOOKUP_UID = 4
    LOOKUP_JAIL = 5
    LOOKUP_DSCP = 6
    LOOKUP_DST_MAC = 7
    LOOKUP_SRC_MAC = 8
    LOOKUP_MARK = 9


class IpFwTlvType(Enum):
    IPFW_TLV_TBL_NAME = 1
    IPFW_TLV_TBLNAME_LIST = 2
    IPFW_TLV_RULE_LIST = 3
    IPFW_TLV_DYNSTATE_LIST = 4
    IPFW_TLV_TBL_ENT = 5
    IPFW_TLV_DYN_ENT = 6
    IPFW_TLV_RULE_ENT = 7
    IPFW_TLV_TBLENT_LIST = 8
    IPFW_TLV_RANGE = 9
    IPFW_TLV_EACTION = 10
    IPFW_TLV_COUNTERS = 11
    IPFW_TLV_OBJDATA = 12
    IPFW_TLV_STATE_NAME = 14
    IPFW_TLV_EACTION_BASE = 1000
