F | |
facilities, Syslog | |
field, Keepalived | |
Fields and values, Xorg | |
file, Syslog | |
file_r, Syslog | |
filter | |
flag | |
fs_types, Mke2fs | |
FS_TYPES SECTION, Mke2fs | |
fs_types_entry, Mke2fs | |
fs_types_record, Mke2fs | |
fs_types_title, Mke2fs | |
fspath | |
Function, Syslog | |
G | |
GENERIC CONSTRUCTIONS, Build | |
Generic primitive definitions, cgrules | |
Generic primitives | |
generic_entry_re, Xorg | |
GLOBAL CONFIGURATION, Keepalived | |
global_conf, Keepalived | |
global_defs, Keepalived | |
global_defs_field, Keepalived | |
group_record, cgrules | |
H | |
host_alias, Sudoers | |
hostname, Syslog | |
Hostname maching, Syslog | |
hostnames, Syslog | |
hour, Cron | |
I | |
identifier, Xorg | |
includedir, Sudoers | |
includes, Xinetd | |
indent | |
indented_entry, IniFile | |
indented_title, IniFile | |
indented_title_label, IniFile | |
INI File settings | |
IniFile | |
input_device, Xorg | |
int, Xorg | |
Internal primitives, IniFile | |
ip6_dotint, Resolv | |
ipaddr | |
ipdev, Keepalived | |
Iptables | |
K | |
Keepalived | |
key_value, Build | |
key_value_line, Build | |
key_value_line_comment, Build |
a list of facilities, separated by commas
let facilities = label_opt_list "facility" ( store token ) comma
let field ( kw:string ) (sto:lens) = indent . Build.key_value_line_comment kw sep_spc sto comment_eol
a file may start with a “-” meaning it does not gets sync’ed everytime
let file = [ Build.xchgs "-" "no_sync" ]? . [ label "file" . store file_r ]
a file begins with a / and get almost anything else after
let file_r = /\/[^ \t\n]+/
A simple flag subnode, consisting of a single key
let flag ( kw:regexp ) = [ key kw ]
A single word
let flag ( kw:regexp ) = indent . Build.flag kw
A fs_types section
let fs_types = IniFile.record fs_types_title ( fs_types_record | comment )
Possible entries under a fs_types_record group
let fs_types_entry =list_sto "features" ( [del /\^/ "^" . label "disable"]? . key Rx.word ) | list_sto "options" (key Rx.word . Util.del_str "=" . store Rx.word) | entry_sto "lazy_itable_init" ("true"|"false") | entry_sto "flex_bg_size" Rx.integer
Fs group records under the fs_types section
let fs_types_record = [ label "filesystem" . Util.indent . store Rx.word . del /[ \t]*=[ \t]*\{[ \t]*\n/ " = {\n" . ((Util.indent . (fs_types_entry|common_entry)) | empty | comment)* . del /[ \t]*\}[ \t]*\n/ " }\n" ]
Title for the fs_types section
let fs_types_title = IniFile.title "fs_types"
let fspath = Rx.fspath
let generic_entry_re = /[^# \t\n\/]+/ - entries_re
A global configuration entry
let global_conf = global_defs | static_routes
A global_defs block
let global_defs = block "global_defs" global_defs_field
Possible fields in the global_defs block
let global_defs_field = block "notification_email" email | field "notification_email_from" sto_email_addr | field "smtp_server" sto_word | field "smtp_connect_timeout" sto_num | field "lvs_id" sto_word | field "router_id" sto_word
let group_record = generic_record "group" ( Util.del_str "@" . store name )
Host_Alias, see alias_field
let host_alias = alias_entry "Host_Alias" "host" sto_to_com
a program begins with an optional hash, and a + or -
let hostname = [ label "hostname" . opt_hash . ( plus | [ Build.xchgs "-" "reverse" ] ) . hostnames . eol . entries ]
a list of hostnames
let hostnames = label_opt_list_or "hostname" ( store Rx.word ) comma "*"
let hour = [ label "hour" . store num ]
let identifier = entry_str "Identifier" /[iI]dentifier/
let includedir = [ key "#includedir" . Sep.space . store Rx.fspath . eol ]
It would be nice if we could use the directories given in include and includedir directives to parse additional files instead of hardcoding all the places where xinetd config files can be found; but that is currently not possible, and implementing that has a good amount of hairy corner cases to consider.
let includes = [ key /include|includedir/ . Util.del_ws_spc . store /[^ \t\n]+/ . eol ]
let indent = Util.indent
let indent = Util.indent
let indent = del /[ \t]*/ ""
Delete indentation, including leading whitespace
let indent = del /[ \t]*/ ""
let indent = Util.indent
Generic INI File entry that might be indented with an arbitrary amount of whitespace
let indented_entry ( kw:regexp ) (sep:lens) (comment:lens) = [ Util.del_opt_ws "" . key kw . sep . sto_to_comment? . (comment|eol) ] | comment
Title for record.
let indented_title ( kw:regexp ) = Util.indent . title kw
Title for record.
let indented_title_label ( name:string ) (kw:regexp) = Util.indent . title_label name kw
let input_device = [ indent . del /[iI]nput[dD]evice/ "InputDevice" . label "InputDevice" . sep_spc . quoted_string_val . [ label "option" . sep_spc . quoted_string_val ]* . eol ]
let int = /[0-9]+/
ip6-dotint option, which supports negation
let ip6_dotint = let negate = [ del "no-" "no-" . label "negate" ] in [ negate? . key "ip6-dotint" ]
An IP address or range with an optional mask
let ipaddr = label "ipaddr" . store /[0-9\.-]+/ . prefixlen?
CIDR or ip+netmask
let ipaddr = /[0-9a-fA-F:\.]+( \/[0-9]+|[ \t]+[0-9\.]+ )/
An IP address or range with an optional mask
let ipaddr = [label "ipaddr" . store Rx.ip . netmask?]
A device for IP addresses
let ipdev = [ key "dev" . sep_spc . sto_word ]
Same as key_value_line, but does not end with an end of line
let key_value ( kw: regexp ) (sep:lens) (sto:lens) = [ key kw . sep . sto ]
A subnode with a keyword, a separator and a storing lens, and an end of line
let key_value_line ( kw:regexp ) (sep:lens) (sto:lens) = [ key kw . sep . sto . eol ]
Same as key_value_line, but allows to have a comment in the end of a line and an end of line
let key_value_line_comment ( kw:regexp ) (sep:lens) (sto:lens) (comment:lens) = [ key kw . sep . sto . (eol|comment) ]