111 lines
No EOL
2 KiB
Python
111 lines
No EOL
2 KiB
Python
import options
|
|
from socket import getprotobyname
|
|
|
|
|
|
if options.import_ops:
|
|
external_import = __import__(options.import_ops)
|
|
|
|
def NOT(op):
|
|
def not_op(*args):
|
|
op_result = op(*args)
|
|
return not op_result
|
|
|
|
return not_op
|
|
|
|
def and_op(*args, **kwargs):
|
|
res = True
|
|
|
|
for arg in args:
|
|
res = res and arg
|
|
|
|
for arg in kwargs.values():
|
|
res = res and arg
|
|
|
|
return res
|
|
|
|
def bitAND(*args):
|
|
res = args[0]
|
|
|
|
for arg in args[1:]:
|
|
res &= arg
|
|
|
|
return res
|
|
|
|
def bitOR(*args):
|
|
res = args[0]
|
|
|
|
for arg in args[1:]:
|
|
res |= arg
|
|
|
|
return res
|
|
|
|
def or_op(*args, **kwargs):
|
|
res = False
|
|
|
|
for arg in args:
|
|
res = res or arg
|
|
|
|
for arg in kwargs.values():
|
|
res = res or arg
|
|
|
|
return res
|
|
|
|
|
|
def protocol(name):
|
|
return getprotobyname(name)
|
|
|
|
def SUM(*args):
|
|
sum = 0
|
|
for arg in args:
|
|
sum += arg
|
|
return sum
|
|
|
|
def EQ(*args):
|
|
prev_arg = args[0]
|
|
result = True
|
|
for arg in args[1:]:
|
|
result = result and prev_arg == arg
|
|
prev_arg = arg
|
|
return result
|
|
|
|
def LT(*args):
|
|
prev_arg = args[0]
|
|
result = True
|
|
for arg in args[1:]:
|
|
result = result and prev_arg < arg
|
|
prev_arg = arg
|
|
return result
|
|
|
|
def GT(*args):
|
|
prev_arg = args[0]
|
|
result = True
|
|
for arg in args[1:]:
|
|
result = result and prev_arg > arg
|
|
prev_arg = arg
|
|
return result
|
|
|
|
def GTEQ(*args):
|
|
prev_arg = args[0]
|
|
result = True
|
|
for arg in args[1:]:
|
|
result = result and prev_arg >= arg
|
|
prev_arg = arg
|
|
return result
|
|
|
|
def LTEQ(*args):
|
|
prev_arg = args[0]
|
|
result = True
|
|
for arg in args[1:]:
|
|
result = result and prev_arg <= arg
|
|
prev_arg = arg
|
|
return result
|
|
|
|
def IN(*args):
|
|
last_arg = args[-1] # probably subnet mask
|
|
result = True
|
|
for arg in args[:-1]:
|
|
result = result and arg & last_arg
|
|
return result
|
|
|
|
def true(*args):
|
|
return True |