paradrop.confd package¶
Submodules¶
paradrop.confd.base module¶
-
class
ConfigObject
(name=None)[source]¶ Bases:
object
-
PRIO_CONFIG_IFACE
= 30¶
-
PRIO_CONFIG_QDISC
= 45¶
-
PRIO_CREATE_IFACE
= 20¶
-
PRIO_CREATE_QDISC
= 40¶
-
PRIO_CREATE_VLAN
= 25¶
-
PRIO_IPTABLES_RULE
= 37¶
-
PRIO_IPTABLES_TOP
= 35¶
-
PRIO_IPTABLES_ZONE
= 36¶
-
PRIO_START_DAEMON
= 60¶
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
classmethod
build
(manager, source, name, options, comment)[source]¶ Build a config object instance from the UCI section.
Arguments: source – file containing this configuration section name – name of the configuration section
If None, a unique name will be generated.options – dictionary of options loaded from the section comment – comment string or None
-
copy
()[source]¶ Make a copy of the config object.
The copy will receive the same name and option values.
-
findByType
(allConfigs, module, typename, where={})[source]¶ Look up sections by type (generator).
where: filter the returned results by checking option values.
-
classmethod
getModule
()[source]¶ Get the module name (e.g. “dhcp”, “wireless”) for a ConfigObject class.
-
getName
()[source]¶ Return section name.
Subclasses that do not have names (anonymous sections) should override this to return some other unique identifier such as an interface name.
-
lookup
(allConfigs, sectionModule, sectionType, sectionName, addDependent=True)[source]¶ Look up a section by type and name.
If addDependent is True (default), the current object will be added as a dependent of the found section.
Will raise an exception if the section is not found.
-
maskable
= True¶
-
nextId
= 0¶
-
options
= []¶
-
static
prioritizeConfigs
(reverse=False)[source]¶ Assign priorities to config objects based on the dependency graph.
Priority zero is assigned to all configs with no dependencies.
priority(config1) > priority(config2) means config1 should be applied later than config2, and config1 should be reverted earlier than config2. For configs with the same priority value, it is presumed that order does not matter.
If reverse is True, the priorities are made negative so that traversing in increasing order gives the proper order for reverting.
Returns a list of tuples (priority, config). This format is suitable for heapq.
-
removeFromParents
()[source]¶ Remove this section from being tracked by its parents.
Call this before discarding a configuration section so that later on, if the parent is updated, it doesn’t try to update non-existent children.
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
setup
()[source]¶ Finish object initialization.
This is called after the config object is initialized will all of its options values filled in. Override to do some preparation work before we start generating commands.
-
typename
= None¶
-
updateApply
(new, allConfigs)[source]¶ Return a list of commands to update to new configuration.
Implementing this is optional for subclasses. The default behavior is to call apply.
Returns a list of (priority, Command) tuples.
-
updateRevert
(new, allConfigs)[source]¶ Return a list of commands to (partially) revert the configuration.
The implementation can be selective about what it reverts (e.g. do not delete an interface if we are only updating its IP address). The default behavior is to call revert.
Returns a list of (priority, Command) tuples.
-
paradrop.confd.client module¶
-
reload
(path)[source]¶ Reload file(s) specified by path.
This function blocks until the request completes. On completion it returns a status string, which is a JSON list of loaded configuration sections with a ‘success’ field. For critical errors it will return None.
paradrop.confd.command module¶
-
class
ErrorCommand
(error, parent=None)[source]¶ Bases:
paradrop.confd.command.Command
Special command object that indicates an error occurred.
-
class
FunctionCommand
(parent, function, *args, **kwargs)[source]¶ Bases:
paradrop.confd.command.Command
Command that runs a Python function.
-
class
KillCommand
(pid, parent=None)[source]¶ Bases:
paradrop.confd.command.Command
Special command object for killing a process
-
kill
(pid, kill_signal=4, timeout=8)[source]¶ Kill a child process and wait with timeout.
- Send a SIGTERM signal to the process.
- Wait up to kill_signal seconds for the process to exit.
- If process is still running, send a SIGKILL signal.
4. Wait up to timeout seconds (cumulative with kill_signal) for the process to exit.
Returns True if the process exited before timeout seconds elapsed.
paradrop.confd.dhcp module¶
-
class
ConfigDhcp
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
options
= [ConfigOption(name='interface', type=<type 'str'>, required=True, default=None), ConfigOption(name='leasetime', type=<type 'str'>, required=False, default=None), ConfigOption(name='limit', type=<type 'int'>, required=False, default=None), ConfigOption(name='start', type=<type 'int'>, required=False, default=None), ConfigOption(name='dhcp_option', type=<type 'list'>, required=False, default=[]), ConfigOption(name='relay', type=<type 'list'>, required=False, default=[])]¶
-
typename
= 'dhcp'¶
-
-
class
ConfigDnsmasq
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
options
= [ConfigOption(name='authoritative', type=<type 'bool'>, required=False, default=True), ConfigOption(name='cachesize', type=<type 'int'>, required=False, default=150), ConfigOption(name='dhcp_boot', type=<type 'str'>, required=False, default=None), ConfigOption(name='dhcpleasemax', type=<type 'int'>, required=False, default=1000), ConfigOption(name='domain', type=<type 'str'>, required=False, default=None), ConfigOption(name='enable_tftp', type=<type 'bool'>, required=False, default=False), ConfigOption(name='expandhosts', type=<type 'bool'>, required=False, default=True), ConfigOption(name='interface', type=<type 'list'>, required=False, default=None), ConfigOption(name='leasefile', type=<type 'str'>, required=False, default=None), ConfigOption(name='noresolv', type=<type 'bool'>, required=False, default=False), ConfigOption(name='server', type=<type 'list'>, required=False, default=None), ConfigOption(name='tftp_root', type=<type 'str'>, required=False, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'dnsmasq'¶
-
-
class
ConfigDomain
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
getName
()[source]¶ Return section name.
Subclasses that do not have names (anonymous sections) should override this to return some other unique identifier such as an interface name.
-
options
= [ConfigOption(name='name', type=<type 'str'>, required=False, default=None), ConfigOption(name='ip', type=<type 'str'>, required=False, default=None)]¶
-
typename
= 'domain'¶
-
paradrop.confd.firewall module¶
-
class
ConfigDefaults
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
getName
()[source]¶ Return section name.
Subclasses that do not have names (anonymous sections) should override this to return some other unique identifier such as an interface name.
-
options
= [ConfigOption(name='input', type=<type 'str'>, required=False, default='ACCEPT'), ConfigOption(name='output', type=<type 'str'>, required=False, default='ACCEPT'), ConfigOption(name='forward', type=<type 'str'>, required=False, default='ACCEPT'), ConfigOption(name='disable_ipv6', type=<type 'bool'>, required=False, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'defaults'¶
-
updateApply
(new, allConfigs)[source]¶ Return a list of commands to update to new configuration.
Implementing this is optional for subclasses. The default behavior is to call apply.
Returns a list of (priority, Command) tuples.
-
updateRevert
(new, allConfigs)[source]¶ Return a list of commands to (partially) revert the configuration.
The implementation can be selective about what it reverts (e.g. do not delete an interface if we are only updating its IP address). The default behavior is to call revert.
Returns a list of (priority, Command) tuples.
-
-
class
ConfigForwarding
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
options
= [ConfigOption(name='src', type=<type 'str'>, required=True, default=None), ConfigOption(name='dest', type=<type 'str'>, required=True, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'forwarding'¶
-
-
class
ConfigRedirect
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
ANY_PROTO
= set(['none', 'any', None])¶
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
options
= [ConfigOption(name='src', type=<type 'str'>, required=False, default=None), ConfigOption(name='src_ip', type=<type 'str'>, required=False, default=None), ConfigOption(name='src_dip', type=<type 'str'>, required=False, default=None), ConfigOption(name='src_port', type=<type 'str'>, required=False, default=None), ConfigOption(name='src_dport', type=<type 'str'>, required=False, default=None), ConfigOption(name='proto', type=<type 'str'>, required=True, default=None), ConfigOption(name='dest', type=<type 'str'>, required=False, default=None), ConfigOption(name='dest_ip', type=<type 'str'>, required=False, default=None), ConfigOption(name='dest_port', type=<type 'str'>, required=False, default=None), ConfigOption(name='target', type=<type 'str'>, required=False, default='DNAT')]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'redirect'¶
-
-
class
ConfigRule
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
options
= [ConfigOption(name='name', type=<type 'str'>, required=False, default=None), ConfigOption(name='src', type=<type 'str'>, required=False, default=None), ConfigOption(name='src_ip', type=<type 'str'>, required=False, default=None), ConfigOption(name='src_port', type=<type 'str'>, required=False, default=None), ConfigOption(name='src_mac', type=<type 'str'>, required=False, default=None), ConfigOption(name='proto', type=<type 'str'>, required=False, default=None), ConfigOption(name='dest', type=<type 'str'>, required=False, default=None), ConfigOption(name='dest_ip', type=<type 'str'>, required=False, default=None), ConfigOption(name='dest_port', type=<type 'str'>, required=False, default=None), ConfigOption(name='target', type=<type 'str'>, required=True, default=None), ConfigOption(name='family', type=<type 'str'>, required=False, default='any'), ConfigOption(name='extra', type=<type 'str'>, required=False, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'rule'¶
-
-
class
ConfigZone
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
options
= [ConfigOption(name='name', type=<type 'str'>, required=True, default=None), ConfigOption(name='network', type=<type 'list'>, required=False, default=None), ConfigOption(name='masq', type=<type 'bool'>, required=False, default=False), ConfigOption(name='masq_src', type=<type 'list'>, required=False, default=['0.0.0.0/0']), ConfigOption(name='masq_dest', type=<type 'list'>, required=False, default=['0.0.0.0/0']), ConfigOption(name='conntrack', type=<type 'bool'>, required=False, default=False), ConfigOption(name='input', type=<type 'str'>, required=False, default='RETURN'), ConfigOption(name='forward', type=<type 'str'>, required=False, default='RETURN'), ConfigOption(name='output', type=<type 'str'>, required=False, default='RETURN'), ConfigOption(name='family', type=<type 'str'>, required=False, default='any')]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
setup
()[source]¶ Finish object initialization.
This is called after the config object is initialized will all of its options values filled in. Override to do some preparation work before we start generating commands.
-
typename
= 'zone'¶
-
paradrop.confd.main module¶
This module listens for messages and triggers reloading of configuration files. This module is the service side of the implementation. If you want to issue reload commands to the service, see the client.py file instead.
paradrop.confd.manager module¶
-
class
ConfigManager
(writeDir, execCommands=True)[source]¶ Bases:
object
-
changingSet
(files)[source]¶ Return the sections from the current configuration that may have changed.
This checks which sections from the current configuration came from files in the given file list. These are sections that may be changed or removed when we reload the files.
-
findMatchingConfig
(config, byName=False)[source]¶ Check the current config for an identical section.
Returns the matching object or None.
-
loadConfig
(search=None, execute=True)[source]¶ Load configuration files and apply changes to the system.
We process the configuration files in sections. Each section corresponds to an interface, firewall rule, DHCP server instance, etc. Each time we reload configuration files after the initial time, we check for changes against the current configuration. Here is the decision tree for handling differences in the newly loaded configuration vs. the existing configuration:
- Section exists in current config (by type and name)?
- No -> Add section, apply changes, and stop.
- Yes -> Continue.
Section is identical to the one in the current config (by option values)?
- No -> Revert current section, mark any affected dependents,
add new section, apply changes, and stop.
Yes -> Continue.
- Section has not changed but one of its dependencies has?
No -> Stop.
- Yes -> Revert current section, mark any affected dependents,
add new section, apply changes, and stop.
-
readConfig
(files)[source]¶ Load configuration files and return configuration objects.
This method only loads the configuration files without making any changes to the system and returns configuration objects as a generator.
-
statusString
()[source]¶ Return a JSON string representing status of the system.
The format will be a list of dictionaries. Each dictionary corresponds to a configuration block and contains at the following fields.
type: interface, wifi-device, etc. name: name of the section (may be autogenerated for some configs) comment: comment from the configuration file or None success: True if all setup commands succeeded
-
-
findConfigFiles
(search=None)[source]¶ Look for and return a list of configuration files.
The behavior depends on whether the search argument is a file, a directory, or None.
If search is None, return a list of files in the system config directory. If search is a file name (not a path), look for it in the working directory first, and the system directory second. If search is a full path to a file, and it exists, then return that file. If search is a directory, return the files in that directory.
paradrop.confd.network module¶
-
class
ConfigInterface
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
DEV_PLUS_VID
= <_sre.SRE_Pattern object>¶
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
maskable
= False¶
-
options
= [ConfigOption(name='proto', type=<type 'str'>, required=True, default=None), ConfigOption(name='ifname', type=<type 'list'>, required=False, default=[]), ConfigOption(name='type', type=<type 'str'>, required=False, default=None), ConfigOption(name='bridge_empty', type=<type 'bool'>, required=False, default=False), ConfigOption(name='enabled', type=<type 'bool'>, required=False, default=True), ConfigOption(name='ipaddr', type=<type 'str'>, required=False, default=None), ConfigOption(name='netmask', type=<type 'str'>, required=False, default=None), ConfigOption(name='gateway', type=<type 'str'>, required=False, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
setup
()[source]¶ Finish object initialization.
This is called after the config object is initialized will all of its options values filled in. Override to do some preparation work before we start generating commands.
-
typename
= 'interface'¶
-
updateApply
(new, allConfigs)[source]¶ Return a list of commands to update to new configuration.
Implementing this is optional for subclasses. The default behavior is to call apply.
Returns a list of (priority, Command) tuples.
-
updateRevert
(new, allConfigs)[source]¶ Return a list of commands to (partially) revert the configuration.
The implementation can be selective about what it reverts (e.g. do not delete an interface if we are only updating its IP address). The default behavior is to call revert.
Returns a list of (priority, Command) tuples.
-
paradrop.confd.qos module¶
-
class
ConfigClass
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
options
= [ConfigOption(name='packetsize', type=<type 'int'>, required=False, default=None), ConfigOption(name='packetdelay', type=<type 'int'>, required=False, default=None), ConfigOption(name='maxsize', type=<type 'int'>, required=False, default=None), ConfigOption(name='avgrate', type=<type 'int'>, required=False, default=None), ConfigOption(name='limitrate', type=<type 'int'>, required=False, default=None), ConfigOption(name='priority', type=<type 'int'>, required=False, default=None)]¶
-
typename
= 'class'¶
-
-
class
ConfigClassgroup
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
get_class_id
(class_name)[source]¶ Get ID for a traffic class in this group.
Returns None if the class is not a member of the group.
-
options
= [ConfigOption(name='classes', type=<type 'str'>, required=True, default=None), ConfigOption(name='default', type=<type 'str'>, required=True, default=None)]¶
-
setup
()[source]¶ Finish object initialization.
This is called after the config object is initialized will all of its options values filled in. Override to do some preparation work before we start generating commands.
-
typename
= 'classgroup'¶
-
-
class
ConfigClassify
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
options
= [ConfigOption(name='target', type=<type 'str'>, required=True, default=None), ConfigOption(name='proto', type=<type 'str'>, required=False, default=None), ConfigOption(name='srchost', type=<type 'str'>, required=False, default=None), ConfigOption(name='dsthost', type=<type 'str'>, required=False, default=None), ConfigOption(name='ports', type=<type 'str'>, required=False, default=None), ConfigOption(name='srcports', type=<type 'str'>, required=False, default=None), ConfigOption(name='dstports', type=<type 'str'>, required=False, default=None), ConfigOption(name='portrange', type=<type 'str'>, required=False, default=None), ConfigOption(name='pktsize', type=<type 'str'>, required=False, default=None), ConfigOption(name='tcpflags', type=<type 'str'>, required=False, default=None), ConfigOption(name='mark', type=<type 'str'>, required=False, default=None), ConfigOption(name='connbytes', type=<type 'str'>, required=False, default=None), ConfigOption(name='tos', type=<type 'str'>, required=False, default=None), ConfigOption(name='dscp', type=<type 'str'>, required=False, default=None), ConfigOption(name='direction', type=<type 'str'>, required=False, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'classify'¶
-
-
class
ConfigInterface
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
options
= [ConfigOption(name='enabled', type=<type 'bool'>, required=True, default=None), ConfigOption(name='classgroup', type=<type 'str'>, required=False, default='Default'), ConfigOption(name='overhead', type=<type 'bool'>, required=False, default=True), ConfigOption(name='upload', type=<type 'int'>, required=False, default=4096), ConfigOption(name='download', type=<type 'int'>, required=False, default=512)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'interface'¶
-
paradrop.confd.wireless module¶
-
class
ConfigWifiDevice
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
detectPrimaryInterface
()[source]¶ Find the primary network interface associated with this Wi-Fi device.
By primary we mean the first interface (e.g. wlan0 or wlan1) that exists at system startup before any interface add commands. We will use the primary interface first, and create additional virtual interfaces after that.
That seems overly complicated, but it is required in cases where the Wi-Fi device does not support virtual interfaces.
Returns interface name or None.
-
options
= [ConfigOption(name='type', type=<type 'str'>, required=True, default=None), ConfigOption(name='phy', type=<type 'str'>, required=False, default=None), ConfigOption(name='macaddr', type=<type 'str'>, required=False, default=None), ConfigOption(name='ifname', type=<type 'str'>, required=False, default=None), ConfigOption(name='channel', type=<type 'int'>, required=True, default=None), ConfigOption(name='hwmode', type=<type 'str'>, required=False, default=None), ConfigOption(name='txpower', type=<type 'int'>, required=False, default=None), ConfigOption(name='country', type=<type 'str'>, required=False, default=None), ConfigOption(name='require_mode', type=<type 'str'>, required=False, default=None), ConfigOption(name='htmode', type=<type 'str'>, required=False, default=None), ConfigOption(name='beacon_int', type=<type 'int'>, required=False, default=None), ConfigOption(name='frag', type=<type 'int'>, required=False, default=None), ConfigOption(name='rts', type=<type 'int'>, required=False, default=None), ConfigOption(name='ldpc', type=<type 'bool'>, required=False, default=None), ConfigOption(name='short_gi_20', type=<type 'bool'>, required=False, default=None), ConfigOption(name='short_gi_40', type=<type 'bool'>, required=False, default=None), ConfigOption(name='tx_stbc', type=<type 'int'>, required=False, default=None), ConfigOption(name='rx_stbc', type=<type 'int'>, required=False, default=None), ConfigOption(name='max_amsdu', type=<type 'bool'>, required=False, default=None), ConfigOption(name='dsss_cck_40', type=<type 'bool'>, required=False, default=None), ConfigOption(name='rxldpc', type=<type 'bool'>, required=False, default=None), ConfigOption(name='short_gi_80', type=<type 'bool'>, required=False, default=None), ConfigOption(name='short_gi_160', type=<type 'bool'>, required=False, default=None), ConfigOption(name='tx_stbc_2by1', type=<type 'bool'>, required=False, default=None), ConfigOption(name='rx_antenna_pattern', type=<type 'bool'>, required=False, default=None), ConfigOption(name='tx_antenna_pattern', type=<type 'bool'>, required=False, default=None), ConfigOption(name='vht_max_mpdu', type=<type 'int'>, required=False, default=None), ConfigOption(name='rx_stbc', type=<type 'int'>, required=False, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
setup
()[source]¶ Finish object initialization.
This is called after the config object is initialized will all of its options values filled in. Override to do some preparation work before we start generating commands.
-
typename
= 'wifi-device'¶
-
-
class
ConfigWifiIface
(name=None)[source]¶ Bases:
paradrop.confd.base.ConfigObject
-
apply
(allConfigs)[source]¶ Return a list of commands to apply this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
getIfname
(device, interface)[source]¶ Returns the name to be used by this WiFi interface, e.g. as seen by ifconfig.
This comes from the “ifname” option if it is set. Otherwise, we use the interface name of the associated network.
-
getName
()[source]¶ Return a unique and consistent identifier for the section.
If ifname is set, then that is a good choice for the name because interface names need to be unique on the system.
If ifname is not set, then we use the combined string device:network. The assumption is that no one will put multiple APs on the same device and same network, or if they do, (e.g. multiple APs on the br-lan bridge), then they will configure the ifname to be unique.
-
getRandomMAC
()[source]¶ Generate a random MAC address.
Returns a string “02:xx:xx:xx:xx:xx”. The first byte is 02, which indicates a locally administered address.
-
options
= [ConfigOption(name='device', type=<type 'str'>, required=True, default=None), ConfigOption(name='mode', type=<type 'str'>, required=True, default=None), ConfigOption(name='ssid', type=<type 'str'>, required=False, default='Paradrop'), ConfigOption(name='hidden', type=<type 'bool'>, required=False, default=False), ConfigOption(name='isolate', type=<type 'bool'>, required=False, default=False), ConfigOption(name='wmm', type=<type 'bool'>, required=False, default=True), ConfigOption(name='network', type=<type 'str'>, required=False, default='lan'), ConfigOption(name='encryption', type=<type 'str'>, required=False, default='none'), ConfigOption(name='key', type=<type 'str'>, required=False, default=None), ConfigOption(name='maxassoc', type=<type 'int'>, required=False, default=None), ConfigOption(name='doth', type=<type 'bool'>, required=False, default=True), ConfigOption(name='short_preamble', type=<type 'bool'>, required=False, default=True), ConfigOption(name='auth_server', type=<type 'str'>, required=False, default=None), ConfigOption(name='auth_port', type=<type 'int'>, required=False, default=1812), ConfigOption(name='auth_secret', type=<type 'str'>, required=False, default=None), ConfigOption(name='acct_server', type=<type 'str'>, required=False, default=None), ConfigOption(name='acct_port', type=<type 'int'>, required=False, default=1813), ConfigOption(name='acct_secret', type=<type 'str'>, required=False, default=None), ConfigOption(name='nasid', type=<type 'str'>, required=False, default=None), ConfigOption(name='ownip', type=<type 'str'>, required=False, default=None), ConfigOption(name='dynamic_vlan', type=<type 'int'>, required=False, default=0), ConfigOption(name='identity', type=<type 'str'>, required=False, default=None), ConfigOption(name='password', type=<type 'str'>, required=False, default=None), ConfigOption(name='ieee80211r', type=<type 'bool'>, required=False, default=False), ConfigOption(name='mobility_domain', type=<type 'str'>, required=False, default='4f57'), ConfigOption(name='r0_key_lifetime', type=<type 'int'>, required=False, default=10000), ConfigOption(name='r1_key_holder', type=<type 'str'>, required=False, default='00004f577274'), ConfigOption(name='reassociation_deadline', type=<type 'int'>, required=False, default=1000), ConfigOption(name='r0kh', type=<type 'list'>, required=False, default=[]), ConfigOption(name='r1kh', type=<type 'list'>, required=False, default=[]), ConfigOption(name='pmk_r1_push', type=<type 'bool'>, required=False, default=False), ConfigOption(name='acct_interval', type=<type 'int'>, required=False, default=300), ConfigOption(name='ifname', type=<type 'str'>, required=False, default=None)]¶
-
revert
(allConfigs)[source]¶ Return a list of commands to revert this configuration.
Most subclasses will need to implement this function.
Returns a list of (priority, Command) tuples.
-
typename
= 'wifi-iface'¶
-
updateApply
(new, allConfigs)[source]¶ Return a list of commands to update to new configuration.
Implementing this is optional for subclasses. The default behavior is to call apply.
Returns a list of (priority, Command) tuples.
-
updateRevert
(new, allConfigs)[source]¶ Return a list of commands to (partially) revert the configuration.
The implementation can be selective about what it reverts (e.g. do not delete an interface if we are only updating its IP address). The default behavior is to call revert.
Returns a list of (priority, Command) tuples.
-