/* eslint-disable @typescript-eslint/triple-slash-reference */ /// /// declare module 'uci' { // collectd export type ICollectdGlobalsSection = INamedSection<'globals'> & { alt_config_file: option_data; }; export type ICollectdPackage = IPackage & { globals: ICollectdGlobalsSection; }; // dhcp export type IDhcpDnsmasqSection = IAnonymousSection<'dnsmasq'> & { addnhosts?: list_data; authoritative?: bool_data; boguspriv?: bool_data; domain?: option_data; domainneeded?: bool_data; ednspacket_max?: option_data; expandhosts?: bool_data; filterwin2k?: bool_data; leasefile?: option_data; local?: option_data; localise_queries?: bool_data; localservice?: bool_data; nonegcache?: bool_data; nonwildcard?: bool_data; readethers?: bool_data; rebind_localhost?: bool_data; rebind_protection?: bool_data; resolvfile?: option_data; }; export type IDhcpDhcpSection = INamedSection<'dhcp'> & { dhcpv4?: option_data; force?: bool_data; ignore?: bool_data; interface?: option_data; leasetime?: option_data; limit?: option_data; ra_flags?: list_data; start?: option_data; }; export type IDhcpOdhcpdSection = INamedSection<'odhcpd'> & { maindhcp?: bool_data; }; export type IDhcpHostSection = IAnonymousSection<'host'> & { dns?: bool_data; ip?: option_data; mac?: option_data; name?: option_data; }; export type IDhcpPackage = IPackage & { odhcpd?: IDhcpOdhcpdSection; } & { [K in SectionName]: IDhcpDnsmasqSection | IDhcpDhcpSection | IDhcpHostSection; }; // network export type NetworkInterfaceProto = | 'static' // Static configuration with fixed address and netmask ip/ifconfig | 'dhcp' // Address and netmask are assigned by DHCP udhcpc (Busybox) | 'dhcpv6' // Address and netmask are assigned by DHCPv6 odhcpc6c | 'ppp' // PPP protocol - dialup modem connections pppd | 'pppoe' // PPP over Ethernet - DSL broadband connection pppd + plugin rp-pppoe.so | 'pppoa' // PPP over ATM - DSL connection using a builtin modem pppd + plugin … | '3g' // CDMA, UMTS or GPRS connection using an AT-style 3G modem comgt | 'qmi' // USB modems using QMI protocol uqmi | 'ncm' // USB modems using NCM protocol comgt-ncm + ? | 'wwan' // USB modems with protocol autodetection wwan | 'hnet' // Self-managing home network (HNCP) hnet-full | 'pptp' // Connection via PPtP VPN ? | '6in4' // IPv6-in-IPv4 tunnel for use with Tunnel Brokers like HE.net ? | 'aiccu' // Anything-in-anything tunnel aiccu | '6to4' // Stateless IPv6 over IPv4 transport ? | '6rd' // IPv6 rapid deployment 6rd | 'dslite' // Dual-Stack Lite ds-lite | 'l2tp' // PPP over L2TP Pseudowire Tunnel xl2tpd | 'relay' // relayd pseudo-bridge relayd | 'gre' //, gretap GRE over IPv4 gre + kmod-gre | 'grev6' //, grev6tap GRE over IPv6 gre + kmod-gre6 | 'vti' // VTI over IPv4 vti + kmod-ip_vti | 'vtiv6' // VTI over IPv6 vti + kmod-ip6_vti | 'vxlan' // VXLAN protocol for layer 2 virtualization, see here for further information and a configuration example vxlan + kmod-vxlan + ip-full | 'none'; // Unspecified protocol, therefore all the other interface settings will be ignored (like disabling the configuration) export type INetworkInterfaceSection = INamedSection<'interface'> & { addresses?: option_data; apn?: option_data; auth?: option_data; auto?: bool_data; broadcast?: bool_data; classlessroute?: bool_data; clientid?: option_data; customroutes?: option_data; defaultroute?: bool_data; device?: option_data; dns_search?: list_data; dns?: list_data; gateway?: option_data; hostname?: option_data; ipaddr?: option_data; metric?: option_data; netmask?: option_data; norelease?: bool_data; password?: option_data; pdptype?: option_data; peerdns?: bool_data; private_key?: option_data; proto: NetworkInterfaceProto; reqopts?: option_data; sendopts?: option_data; username?: option_data; vendorid: option_data; zone?: option_data; }; export type INetworkGlobalSection = INamedSection<'globals'> & { packet_steering?: bool_data; ula_prefix?: 'auto' | option_data; }; export type INetworkDeviceSection = IAnonymousSection<'device'> & { acceptlocal?: bool_data; bridge_empty?: bool_data; dadtransmits?: option_data; igmpversion?: '1' | '2' | '3'; ipv6?: bool_data; macaddr?: option_data; mldversion?: '1' | '2'; mtu?: option_data; mtu6?: option_data; multicast?: bool_data; name: option_data; neighgcstaletime?: bool_data; neighlocktime?: bool_data; neighreachabletime?: bool_data; ports?: list_data; promisc?: bool_data; rpfilter?: 'loose' | 'strict'; sendredirects?: bool_data; stp?: bool_data; txqueuelen?: option_data; type: 'bridge' | '8021q' | '8021ad' | 'macvlan' | 'veth'; }; export type INetworkWireguardSection = IAnonymousSection<'wireguard_X'> & { allowed_ips?: list_data; description?: option_data; disabled?: bool_data; endpoint_host?: option_data; endpoint_port?: option_data; persistent_keepalive?: option_data; preshared_key?: option_data; private_key?: option_data; public_key?: option_data; route_allowed_ips?: bool_data; }; export type INetworkPackage = IPackage & { globals?: INetworkGlobalSection; } & { [K in SectionName]: INetworkInterfaceSection | INetworkDeviceSection | INetworkWireguardSection; }; export type IRpcdRpcdSection = IAnonymousSection<'rpcd'> & { socket: option_data; timeout: option_data; }; export type IRpcdLoginSection = IAnonymousSection<'login'> & { password: option_data; read: list_data; username: option_data; write: list_data; }; export type IRpcdPackage = IPackage & { [K in SectionName]: IRpcdLoginSection | IRpcdRpcdSection; }; export type IWirelessDeviceSection = INamedSection<'wifi-device'> & { band?: '2g' | '5g'; channel?: option_data; country?: Uppercase; disabled?: bool_data; htmode?: option_data; path?: option_data; type?: 'mac80211' | option_data; }; export type IWirelessIfaceSection = INamedSection<'wifi-iface'> & { device?: option_data; disabled?: bool_data; encryption?: 'psk2' | option_data; key?: option_data; mode?: 'ap' | option_data; network?: option_data; ssid?: option_data; }; export type IWirelessPackage = IPackage & { [K in SectionName]: IWirelessDeviceSection | IWirelessIfaceSection; }; // eslint-disable-next-line @typescript-eslint/ban-types export type IXinetdPackage = IPackage & {}; export interface IConfigData { collectd?: ICollectdPackage; dhcp?: IDhcpPackage; network?: INetworkPackage; rpcd?: IRpcdPackage; wireless?: IWirelessPackage; xinetd?: IXinetdPackage; } }