51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
# This plugin introduces a new load balancing method "custom", which does
|
|
# nothing by default. To support packet source plugins, it allows to set a
|
|
# prefix and suffix for the interface name. For example, add the following
|
|
# line to zeekctl.cfg to enable the AF_PACKET plugin:
|
|
# lb_custom.InterfacePrefix = af_packet::
|
|
|
|
import ZeekControl.plugin
|
|
|
|
|
|
class LBCustom(ZeekControl.plugin.Plugin):
|
|
def __init__(self):
|
|
super().__init__(apiversion=1)
|
|
|
|
def name(self):
|
|
return "lb_custom"
|
|
|
|
def pluginVersion(self):
|
|
return 1
|
|
|
|
def init(self):
|
|
useplugin = False
|
|
|
|
for nn in self.nodes():
|
|
if nn.type != "worker" or nn.lb_method != "custom":
|
|
continue
|
|
|
|
useplugin = True
|
|
|
|
prefix = self.getOption("InterfacePrefix")
|
|
suffix = self.getOption("InterfaceSuffix")
|
|
nn.interface = f"{prefix}{nn.interface}{suffix}"
|
|
|
|
return useplugin
|
|
|
|
def options(self):
|
|
custom_options = [
|
|
(
|
|
"InterfacePrefix",
|
|
"string",
|
|
"",
|
|
"Prefix to prepend to the configured interface name.",
|
|
),
|
|
(
|
|
"InterfaceSuffix",
|
|
"string",
|
|
"",
|
|
"Suffix to append to the configured interface name.",
|
|
),
|
|
]
|
|
return custom_options
|