summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/styles/Google/AMPM.yml9
-rw-r--r--.github/styles/Google/Acronyms.yml64
-rw-r--r--.github/styles/Google/Colons.yml7
-rw-r--r--.github/styles/Google/Contractions.yml28
-rw-r--r--.github/styles/Google/DateFormat.yml9
-rw-r--r--.github/styles/Google/Ellipses.yml7
-rw-r--r--.github/styles/Google/EmDash.yml8
-rw-r--r--.github/styles/Google/EnDash.yml7
-rw-r--r--.github/styles/Google/Exclamation.yml7
-rw-r--r--.github/styles/Google/FirstPerson.yml11
-rw-r--r--.github/styles/Google/Gender.yml9
-rw-r--r--.github/styles/Google/GenderBias.yml45
-rw-r--r--.github/styles/Google/HeadingPunctuation.yml8
-rw-r--r--.github/styles/Google/Headings.yml26
-rw-r--r--.github/styles/Google/Hyphens.yml8
-rw-r--r--.github/styles/Google/Latin.yml9
-rw-r--r--.github/styles/Google/LyHyphens.yml8
-rw-r--r--.github/styles/Google/OptionalPlurals.yml7
-rw-r--r--.github/styles/Google/Ordinal.yml7
-rw-r--r--.github/styles/Google/OxfordComma.yml7
-rw-r--r--.github/styles/Google/Parens.yml7
-rw-r--r--.github/styles/Google/Passive.yml184
-rw-r--r--.github/styles/Google/Periods.yml7
-rw-r--r--.github/styles/Google/Quotes.yml7
-rw-r--r--.github/styles/Google/Ranges.yml7
-rw-r--r--.github/styles/Google/Semicolons.yml8
-rw-r--r--.github/styles/Google/Slang.yml11
-rw-r--r--.github/styles/Google/Spacing.yml8
-rw-r--r--.github/styles/Google/Spelling.yml8
-rw-r--r--.github/styles/Google/Units.yml7
-rw-r--r--.github/styles/Google/Will.yml7
-rw-r--r--.github/styles/Google/WordList.yml79
-rw-r--r--.github/styles/Google/meta.json16
-rw-r--r--.github/styles/Google/vocab.txt0
-rw-r--r--.github/styles/VyOS/Terminology.yml9
-rw-r--r--README.md15
-rw-r--r--docker/Dockerfile2
-rw-r--r--docs/404.rst3
-rw-r--r--docs/_include/interface-eapol.txt38
m---------docs/_include/vyos-1x0
-rw-r--r--docs/automation/cloud-init.rst219
-rw-r--r--docs/changelog/1.3.rst83
-rw-r--r--docs/changelog/1.4.rst110
-rw-r--r--docs/configuration/policy/local-route.rst31
-rw-r--r--docs/configuration/protocols/bfd.rst8
-rw-r--r--docs/configuration/service/dhcp-server.rst10
-rw-r--r--docs/configuration/vpn/ipsec.rst14
-rw-r--r--docs/documentation.rst2
-rw-r--r--docs/installation/virtual/proxmox.rst42
-rw-r--r--docs/introducing/history.rst162
-rw-r--r--vale.ini16
51 files changed, 621 insertions, 790 deletions
diff --git a/.github/styles/Google/AMPM.yml b/.github/styles/Google/AMPM.yml
deleted file mode 100644
index fbdc6e4f..00000000
--- a/.github/styles/Google/AMPM.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-extends: existence
-message: "Use 'AM' or 'PM' (preceded by a space)."
-link: 'https://developers.google.com/style/word-list'
-level: error
-nonword: true
-tokens:
- - '\d{1,2}[AP]M'
- - '\d{1,2} ?[ap]m'
- - '\d{1,2} ?[aApP]\.[mM]\.'
diff --git a/.github/styles/Google/Acronyms.yml b/.github/styles/Google/Acronyms.yml
deleted file mode 100644
index f41af018..00000000
--- a/.github/styles/Google/Acronyms.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-extends: conditional
-message: "Spell out '%s', if it's unfamiliar to the audience."
-link: 'https://developers.google.com/style/abbreviations'
-level: suggestion
-ignorecase: false
-# Ensures that the existence of 'first' implies the existence of 'second'.
-first: '\b([A-Z]{3,5})\b'
-second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)'
-# ... with the exception of these:
-exceptions:
- - API
- - ASP
- - CLI
- - CPU
- - CSS
- - CSV
- - DEBUG
- - DOM
- - DPI
- - FAQ
- - GCC
- - GDB
- - GET
- - GPU
- - GTK
- - GUI
- - HTML
- - HTTP
- - HTTPS
- - IDE
- - JAR
- - JSON
- - JSX
- - LESS
- - LLDB
- - NET
- - NOTE
- - NVDA
- - OSS
- - PATH
- - PDF
- - PHP
- - POST
- - RAM
- - REPL
- - RSA
- - SCM
- - SCSS
- - SDK
- - SQL
- - SSH
- - SSL
- - SVG
- - TBD
- - TCP
- - TODO
- - URI
- - URL
- - USB
- - UTF
- - XML
- - XSS
- - YAML
- - ZIP
diff --git a/.github/styles/Google/Colons.yml b/.github/styles/Google/Colons.yml
deleted file mode 100644
index 9a4b4b4a..00000000
--- a/.github/styles/Google/Colons.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "'%s' should be in lowercase."
-link: 'https://developers.google.com/style/colons'
-nonword: true
-level: warning
-tokens:
- - ':\s[A-Z]'
diff --git a/.github/styles/Google/Contractions.yml b/.github/styles/Google/Contractions.yml
deleted file mode 100644
index 905a39f4..00000000
--- a/.github/styles/Google/Contractions.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-extends: substitution
-message: "Feel free to use '%s' instead of '%s'."
-link: 'https://developers.google.com/style/contractions'
-level: suggestion
-ignorecase: true
-swap:
- are not: aren't
- cannot: can't
- could not: couldn't
- did not: didn't
- do not: don't
- does not: doesn't
- has not: hasn't
- have not: haven't
- how is: how's
- is not: isn't
- it is: it's
- should not: shouldn't
- that is: that's
- they are: they're
- was not: wasn't
- we are: we're
- we have: we've
- were not: weren't
- what is: what's
- when is: when's
- where is: where's
- will not: won't
diff --git a/.github/styles/Google/DateFormat.yml b/.github/styles/Google/DateFormat.yml
deleted file mode 100644
index e9d227fa..00000000
--- a/.github/styles/Google/DateFormat.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-extends: existence
-message: "Use 'July 31, 2016' format, not '%s'."
-link: 'https://developers.google.com/style/dates-times'
-ignorecase: true
-level: error
-nonword: true
-tokens:
- - '\d{1,2}(?:\.|/)\d{1,2}(?:\.|/)\d{4}'
- - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}'
diff --git a/.github/styles/Google/Ellipses.yml b/.github/styles/Google/Ellipses.yml
deleted file mode 100644
index 436e6177..00000000
--- a/.github/styles/Google/Ellipses.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "In general, don't use an ellipsis."
-link: 'https://developers.google.com/style/ellipses'
-nonword: true
-level: warning
-tokens:
- - '\.\.\.'
diff --git a/.github/styles/Google/EmDash.yml b/.github/styles/Google/EmDash.yml
deleted file mode 100644
index c6018db1..00000000
--- a/.github/styles/Google/EmDash.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "Don't put a space before or after an em dash."
-link: 'https://developers.google.com/style/dashes'
-nonword: true
-level: error
-tokens:
- - '\s—'
- - '—\s'
diff --git a/.github/styles/Google/EnDash.yml b/.github/styles/Google/EnDash.yml
deleted file mode 100644
index 194876aa..00000000
--- a/.github/styles/Google/EnDash.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Use an em dash ('—') instead of '–'."
-link: 'https://developers.google.com/style/dashes'
-nonword: true
-level: error
-tokens:
- - '–'
diff --git a/.github/styles/Google/Exclamation.yml b/.github/styles/Google/Exclamation.yml
deleted file mode 100644
index c4db380b..00000000
--- a/.github/styles/Google/Exclamation.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Don't use exclamation points in text."
-link: 'https://developers.google.com/style/exclamation-points'
-nonword: true
-level: error
-tokens:
- - '!'
diff --git a/.github/styles/Google/FirstPerson.yml b/.github/styles/Google/FirstPerson.yml
deleted file mode 100644
index d2290611..00000000
--- a/.github/styles/Google/FirstPerson.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-extends: existence
-message: "Avoid first-person pronouns such as '%s'."
-link: 'https://developers.google.com/style/pronouns#personal-pronouns'
-ignorecase: true
-level: warning
-nonword: true
-tokens:
- - (?:^|\s)I\s
- - \bme\b
- - \bus\b
- - \bours\b
diff --git a/.github/styles/Google/Gender.yml b/.github/styles/Google/Gender.yml
deleted file mode 100644
index c8486181..00000000
--- a/.github/styles/Google/Gender.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-extends: existence
-message: "Don't use '%s' as a gender-neutral pronoun."
-link: 'https://developers.google.com/style/pronouns#gender-neutral-pronouns'
-level: error
-ignorecase: true
-tokens:
- - he/she
- - s/he
- - \(s\)he
diff --git a/.github/styles/Google/GenderBias.yml b/.github/styles/Google/GenderBias.yml
deleted file mode 100644
index 261cfb66..00000000
--- a/.github/styles/Google/GenderBias.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-extends: substitution
-message: "Consider using '%s' instead of '%s'."
-link: 'https://developers.google.com/style/inclusive-documentation'
-ignorecase: true
-level: error
-swap:
- (?:alumna|alumnus): graduate
- (?:alumnae|alumni): graduates
- air(?:m[ae]n|wom[ae]n): pilot(s)
- anchor(?:m[ae]n|wom[ae]n): anchor(s)
- authoress: author
- camera(?:m[ae]n|wom[ae]n): camera operator(s)
- chair(?:m[ae]n|wom[ae]n): chair(s)
- congress(?:m[ae]n|wom[ae]n): member(s) of congress
- door(?:m[ae]|wom[ae]n): concierge(s)
- draft(?:m[ae]n|wom[ae]n): drafter(s)
- fire(?:m[ae]n|wom[ae]n): firefighter(s)
- fisher(?:m[ae]n|wom[ae]n): fisher(s)
- fresh(?:m[ae]n|wom[ae]n): first-year student(s)
- garbage(?:m[ae]n|wom[ae]n): waste collector(s)
- lady lawyer: lawyer
- ladylike: courteous
- landlord: building manager
- mail(?:m[ae]n|wom[ae]n): mail carriers
- man and wife: husband and wife
- man enough: strong enough
- mankind: human kind
- manmade: manufactured
- manpower: personnel
- men and girls: men and women
- middle(?:m[ae]n|wom[ae]n): intermediary
- news(?:m[ae]n|wom[ae]n): journalist(s)
- ombuds(?:man|woman): ombuds
- oneupmanship: upstaging
- poetess: poet
- police(?:m[ae]n|wom[ae]n): police officer(s)
- repair(?:m[ae]n|wom[ae]n): technician(s)
- sales(?:m[ae]n|wom[ae]n): salesperson or sales people
- service(?:m[ae]n|wom[ae]n): soldier(s)
- steward(?:ess)?: flight attendant
- tribes(?:m[ae]n|wom[ae]n): tribe member(s)
- waitress: waiter
- woman doctor: doctor
- woman scientist[s]?: scientist(s)
- work(?:m[ae]n|wom[ae]n): worker(s)
diff --git a/.github/styles/Google/HeadingPunctuation.yml b/.github/styles/Google/HeadingPunctuation.yml
deleted file mode 100644
index 5c39abbf..00000000
--- a/.github/styles/Google/HeadingPunctuation.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "Don't put a period at the end of a heading."
-link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings'
-nonword: true
-level: warning
-scope: heading
-tokens:
- - '[a-z0-9][.](?:\s|$)'
diff --git a/.github/styles/Google/Headings.yml b/.github/styles/Google/Headings.yml
deleted file mode 100644
index 5afb968d..00000000
--- a/.github/styles/Google/Headings.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-extends: capitalization
-message: "'%s' should use sentence-style capitalization."
-link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings'
-level: warning
-scope: heading
-match: $sentence
-exceptions:
- - Azure
- - CLI
- - Code
- - Cosmos
- - Docker
- - Emmet
- - I
- - Kubernetes
- - Linux
- - macOS
- - Marketplace
- - MongoDB
- - REPL
- - Studio
- - TypeScript
- - URLs
- - Visual
- - VS
- - Windows
diff --git a/.github/styles/Google/Hyphens.yml b/.github/styles/Google/Hyphens.yml
deleted file mode 100644
index f9779637..00000000
--- a/.github/styles/Google/Hyphens.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "Don't place a space on either side of a hyphen (unless it's suspended)."
-link: 'https://developers.google.com/style/hyphens'
-level: warning
-nonword: true
-tokens:
- - '\s-'
- - '-\s'
diff --git a/.github/styles/Google/Latin.yml b/.github/styles/Google/Latin.yml
deleted file mode 100644
index f032b349..00000000
--- a/.github/styles/Google/Latin.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-extends: substitution
-message: "Use '%s' instead of '%s'."
-link: 'https://developers.google.com/style/abbreviations'
-ignorecase: true
-level: error
-nonword: true
-swap:
- '\b(?:eg|e\.g\.)[\s,]': for example
- '\b(?:ie|i\.e\.)[\s,]': that is
diff --git a/.github/styles/Google/LyHyphens.yml b/.github/styles/Google/LyHyphens.yml
deleted file mode 100644
index d5b6a942..00000000
--- a/.github/styles/Google/LyHyphens.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "'%s' doesn't need a hyphen."
-link: 'https://developers.google.com/style/hyphens'
-level: error
-ignorecase: false
-nonword: true
-tokens:
- - '\s[^\s-]+ly-'
diff --git a/.github/styles/Google/OptionalPlurals.yml b/.github/styles/Google/OptionalPlurals.yml
deleted file mode 100644
index 7058932f..00000000
--- a/.github/styles/Google/OptionalPlurals.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Don't use plurals in parentheses such as in '%s'."
-link: 'https://developers.google.com/style/plurals-parentheses'
-level: error
-nonword: true
-tokens:
- - '\b\w+\(s\)'
diff --git a/.github/styles/Google/Ordinal.yml b/.github/styles/Google/Ordinal.yml
deleted file mode 100644
index 8c429e0f..00000000
--- a/.github/styles/Google/Ordinal.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Spell out all ordinal numbers ('%s') in text."
-link: 'https://developers.google.com/style/numbers'
-level: error
-nonword: true
-tokens:
- - \d+(?:st|th|rd)
diff --git a/.github/styles/Google/OxfordComma.yml b/.github/styles/Google/OxfordComma.yml
deleted file mode 100644
index 98b07113..00000000
--- a/.github/styles/Google/OxfordComma.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Use the Oxford comma in '%s'."
-link: 'https://developers.google.com/style/commas'
-scope: sentence
-level: warning
-tokens:
- - '(?:[^,]+,){1,}\s\w+\sand'
diff --git a/.github/styles/Google/Parens.yml b/.github/styles/Google/Parens.yml
deleted file mode 100644
index 3b8711d0..00000000
--- a/.github/styles/Google/Parens.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Use parentheses judiciously."
-link: 'https://developers.google.com/style/parentheses'
-nonword: true
-level: suggestion
-tokens:
- - '\(.+\)'
diff --git a/.github/styles/Google/Passive.yml b/.github/styles/Google/Passive.yml
deleted file mode 100644
index 3265890e..00000000
--- a/.github/styles/Google/Passive.yml
+++ /dev/null
@@ -1,184 +0,0 @@
-extends: existence
-link: 'https://developers.google.com/style/voice'
-message: "In general, use active voice instead of passive voice ('%s')."
-ignorecase: true
-level: suggestion
-raw:
- - \b(am|are|were|being|is|been|was|be)\b\s*
-tokens:
- - '[\w]+ed'
- - awoken
- - beat
- - become
- - been
- - begun
- - bent
- - beset
- - bet
- - bid
- - bidden
- - bitten
- - bled
- - blown
- - born
- - bought
- - bound
- - bred
- - broadcast
- - broken
- - brought
- - built
- - burnt
- - burst
- - cast
- - caught
- - chosen
- - clung
- - come
- - cost
- - crept
- - cut
- - dealt
- - dived
- - done
- - drawn
- - dreamt
- - driven
- - drunk
- - dug
- - eaten
- - fallen
- - fed
- - felt
- - fit
- - fled
- - flown
- - flung
- - forbidden
- - foregone
- - forgiven
- - forgotten
- - forsaken
- - fought
- - found
- - frozen
- - given
- - gone
- - gotten
- - ground
- - grown
- - heard
- - held
- - hidden
- - hit
- - hung
- - hurt
- - kept
- - knelt
- - knit
- - known
- - laid
- - lain
- - leapt
- - learnt
- - led
- - left
- - lent
- - let
- - lighted
- - lost
- - made
- - meant
- - met
- - misspelt
- - mistaken
- - mown
- - overcome
- - overdone
- - overtaken
- - overthrown
- - paid
- - pled
- - proven
- - put
- - quit
- - read
- - rid
- - ridden
- - risen
- - run
- - rung
- - said
- - sat
- - sawn
- - seen
- - sent
- - set
- - sewn
- - shaken
- - shaven
- - shed
- - shod
- - shone
- - shorn
- - shot
- - shown
- - shrunk
- - shut
- - slain
- - slept
- - slid
- - slit
- - slung
- - smitten
- - sold
- - sought
- - sown
- - sped
- - spent
- - spilt
- - spit
- - split
- - spoken
- - spread
- - sprung
- - spun
- - stolen
- - stood
- - stridden
- - striven
- - struck
- - strung
- - stuck
- - stung
- - stunk
- - sung
- - sunk
- - swept
- - swollen
- - sworn
- - swum
- - swung
- - taken
- - taught
- - thought
- - thrived
- - thrown
- - thrust
- - told
- - torn
- - trodden
- - understood
- - upheld
- - upset
- - wed
- - wept
- - withheld
- - withstood
- - woken
- - won
- - worn
- - wound
- - woven
- - written
- - wrung
diff --git a/.github/styles/Google/Periods.yml b/.github/styles/Google/Periods.yml
deleted file mode 100644
index d24a6a6c..00000000
--- a/.github/styles/Google/Periods.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Don't use periods with acronyms or initialisms such as '%s'."
-link: 'https://developers.google.com/style/abbreviations'
-level: error
-nonword: true
-tokens:
- - '\b(?:[A-Z]\.){3,}'
diff --git a/.github/styles/Google/Quotes.yml b/.github/styles/Google/Quotes.yml
deleted file mode 100644
index 3cb6f1ab..00000000
--- a/.github/styles/Google/Quotes.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Commas and periods go inside quotation marks."
-link: 'https://developers.google.com/style/quotation-marks'
-level: error
-nonword: true
-tokens:
- - '"[^"]+"[.,?]'
diff --git a/.github/styles/Google/Ranges.yml b/.github/styles/Google/Ranges.yml
deleted file mode 100644
index 3ec045e7..00000000
--- a/.github/styles/Google/Ranges.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Don't add words such as 'from' or 'between' to describe a range of numbers."
-link: 'https://developers.google.com/style/hyphens'
-nonword: true
-level: warning
-tokens:
- - '(?:from|between)\s\d+\s?-\s?\d+'
diff --git a/.github/styles/Google/Semicolons.yml b/.github/styles/Google/Semicolons.yml
deleted file mode 100644
index bb8b85b4..00000000
--- a/.github/styles/Google/Semicolons.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "Use semicolons judiciously."
-link: 'https://developers.google.com/style/semicolons'
-nonword: true
-scope: sentence
-level: suggestion
-tokens:
- - ';'
diff --git a/.github/styles/Google/Slang.yml b/.github/styles/Google/Slang.yml
deleted file mode 100644
index 63f4c248..00000000
--- a/.github/styles/Google/Slang.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-extends: existence
-message: "Don't use internet slang abbreviations such as '%s'."
-link: 'https://developers.google.com/style/abbreviations'
-ignorecase: true
-level: error
-tokens:
- - 'tl;dr'
- - ymmv
- - rtfm
- - imo
- - fwiw
diff --git a/.github/styles/Google/Spacing.yml b/.github/styles/Google/Spacing.yml
deleted file mode 100644
index 5f209a9f..00000000
--- a/.github/styles/Google/Spacing.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "'%s' should have one space."
-link: 'https://developers.google.com/style/sentence-spacing'
-level: error
-nonword: true
-tokens:
- - '[.?!] {2,}[A-Z]'
- - '[.?!][A-Z]'
diff --git a/.github/styles/Google/Spelling.yml b/.github/styles/Google/Spelling.yml
deleted file mode 100644
index 57acb884..00000000
--- a/.github/styles/Google/Spelling.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "In general, use American spelling instead of '%s'."
-link: 'https://developers.google.com/style/spelling'
-ignorecase: true
-level: warning
-tokens:
- - '(?:\w+)nised?'
- - '(?:\w+)logue'
diff --git a/.github/styles/Google/Units.yml b/.github/styles/Google/Units.yml
deleted file mode 100644
index 220de3e9..00000000
--- a/.github/styles/Google/Units.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Put a nonbreaking space between the number and the unit in '%s'."
-link: 'https://developers.google.com/style/units-of-measure'
-nonword: true
-level: error
-tokens:
- - \d+(?:GB|TB|MB)
diff --git a/.github/styles/Google/Will.yml b/.github/styles/Google/Will.yml
deleted file mode 100644
index 128a9183..00000000
--- a/.github/styles/Google/Will.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-extends: existence
-message: "Avoid using '%s'."
-link: 'https://developers.google.com/style/tense'
-ignorecase: true
-level: warning
-tokens:
- - will
diff --git a/.github/styles/Google/WordList.yml b/.github/styles/Google/WordList.yml
deleted file mode 100644
index d5d6bea5..00000000
--- a/.github/styles/Google/WordList.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-extends: substitution
-message: "Use %s instead of '%s'."
-link: 'https://developers.google.com/style/word-list'
-level: warning
-ignorecase: false
-swap:
- '(?:API Console|dev|developer) key': "'API key'"
- '(?:cell ?phone|smart ?phone)': "'phone' or 'mobile phone'"
- '(?:dev|developer|APIs) console': "'API console'"
- '(?:e-mail|Email|E-mail)': "'email'"
- '(?:file ?path|path ?name)': "'path'"
- '(?:kill|terminate)': "'stop', 'exit', 'cancel', or 'end'"
- '(?:OAuth ?2|Oauth)': "'OAuth 2.0'"
- '(?:ok|Okay)': "'OK' or 'okay'"
- '(?:WiFi|wifi)': "'Wi-Fi'"
- '[\.]+apk': "'APK'"
- '3\-D': "'3D'"
- 'Google (?:I\-O|IO)': "'Google I/O'"
- 'tap (?:&|and) hold': "'touch & hold'"
- 'un(?:check|select)': "'clear'"
- abort: "'stop', 'exit', 'cancel' or 'end'"
- above: "'preceding'"
- account name: "'username'"
- action bar: "'app bar'"
- admin: "'administrator'"
- Ajax: "'AJAX'"
- Android device: "'Android-powered device'"
- android: "'Android'"
- API explorer: "'APIs Explorer'"
- application: "'app'"
- approx\.: "'approximately'"
- authN: "'authentication'"
- authZ: "'authorization'"
- autoupdate: "'automatically update'"
- cellular data: "'mobile data'"
- cellular network: "'mobile network'"
- chapter: "'documents', 'pages', 'sections'"
- check box: "'checkbox'"
- check: "'select'"
- CLI: "'command-line tool'"
- click on: "'click' or 'click in'"
- Cloud: "'Google Cloud Platform' or 'GCP'"
- Container Engine: "'Kubernetes Engine'"
- content type: "'media type'"
- curated roles: "'predefined roles'"
- data are: "'data is'"
- Developers Console: "'Google API Console' or 'API Console'"
- disabled?: "'turn off' or 'off'"
- ephemeral IP address: "'ephemeral external IP address'"
- fewer data: "'less data'"
- file name: "'filename'"
- firewalls: "'firewall rules'"
- functionality: "'capability' or 'feature'"
- Google account: "'Google Account'"
- Google accounts: "'Google Accounts'"
- Googling: "'search with Google'"
- grayed-out: "'unavailable'"
- HTTPs: "'HTTPS'"
- in order to: "'to'"
- ingest: "'import' or 'load'"
- k8s: "'Kubernetes'"
- long press: "'touch & hold'"
- network IP address: "'internal IP address'"
- omnibox: "'address bar'"
- open-source: "'open source'"
- overview screen: "'recents screen'"
- regex: "'regular expression'"
- SHA1: "'SHA-1' or 'HAS-SHA1'"
- sign into: "'sign in to'"
- sign-?on: "'single sign-on'"
- static IP address: "'static external IP address'"
- stylesheet: "'style sheet'"
- synch: "'sync'"
- tablename: "'table name'"
- tablet: "'device'"
- touch: "'tap'"
- url: "'URL'"
- vs\.: "'versus'"
- World Wide Web: "'web'"
diff --git a/.github/styles/Google/meta.json b/.github/styles/Google/meta.json
deleted file mode 100644
index 3ae5fb21..00000000
--- a/.github/styles/Google/meta.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "author": "Joseph Kato",
- "description": "A Vale-compatible implementation of the Microsoft Writing Style Guide.",
- "email": "support@errata.ai",
- "lang": "en",
- "url": "https://github.com/errata-ai/Google/releases/latest/download/Google.zip",
- "feed": "https://github.com/errata-ai/Google/releases.atom",
- "issues": "https://github.com/errata-ai/Google/issues/new",
- "license": "MIT",
- "name": "Google",
- "sources": [
- "https://developers.google.com/style/"
- ],
- "vale_version": ">=1.0.0",
- "coverage": 0.0
-}
diff --git a/.github/styles/Google/vocab.txt b/.github/styles/Google/vocab.txt
deleted file mode 100644
index e69de29b..00000000
--- a/.github/styles/Google/vocab.txt
+++ /dev/null
diff --git a/.github/styles/VyOS/Terminology.yml b/.github/styles/VyOS/Terminology.yml
deleted file mode 100644
index cd0c5089..00000000
--- a/.github/styles/VyOS/Terminology.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-extends: substitution
-message: Prefer '%s' over '%s'
-ignorecase: false
-level: error
-swap:
- vyos: VyOS
- Vyos: VyOS
- VYOS: VyOS
- Gre: GRE \ No newline at end of file
diff --git a/README.md b/README.md
index 5c269651..90d397d3 100644
--- a/README.md
+++ b/README.md
@@ -28,20 +28,6 @@ largest. There are 88 of them, here's the
* 1.4.x: `sagitta` (Arrow)
* ...
-## Native
-
-To build the manual, run the following commands inside the `docs` folder:
-
-* `make html` for an HTML manual
-* `make latexpdf` for a LaTeX rendered PDF
-
-Required Debian Packages:
-* `latexmk`
-* `texlive-latex-recommended`
-* `texlive-fonts-recommended`
-* `texlive-latex-extra`
-* `sphinx`
-
### sphinx
Debian requires some extra steps for
installing `sphinx`, `sphinx-autobuild` and `sphinx-rtd-theme` packages:
@@ -76,7 +62,6 @@ Then run:
sudo pip install sphinx-rtd-theme
```
-
Do the following to build the HTML and start a webserver:
* Run `make livehtml` inside the `docs` folder
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 9b31f49f..fbb60ddc 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -46,8 +46,6 @@ EXPOSE 8000
RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \
chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod
-# vale
-RUN curl -sfL https://install.goreleaser.com/github.com/ValeLint/vale.sh | sh -s v1.7.1
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
diff --git a/docs/404.rst b/docs/404.rst
index 85444615..5073773a 100644
--- a/docs/404.rst
+++ b/docs/404.rst
@@ -7,4 +7,5 @@ Sorry, We could not find a page.
Try using the search box or go to the release homepage:
* `1.2.x (crux) <https://docs.vyos.io/en/crux/>`_
- * `rolling release (equuleus) <https://docs.vyos.io/en/latest/>`_ \ No newline at end of file
+ * `1.3.x (equuleus) <https://docs.vyos.io/en/equuleus/>`_
+ * `rolling release (sagitta) <https://docs.vyos.io/en/latest/>`_
diff --git a/docs/_include/interface-eapol.txt b/docs/_include/interface-eapol.txt
index 68e5073d..640fc6e3 100644
--- a/docs/_include/interface-eapol.txt
+++ b/docs/_include/interface-eapol.txt
@@ -7,31 +7,35 @@ EAPoL comes with an identify option. We automatically use the interface MAC
address as identity parameter.
.. cfgcmd:: set interfaces {{ var0 }} <interface> {{ var2 }} {{ var3 }}
- {{ var5 }} {{ var6 }} eapol ca-cert-file <file>
+ {{ var5 }} {{ var6 }} eapol ca-certificate <name>
- SSL :abbr:`CA (Certificate Authority)` x509 PEM file used afor authentication
- of the remote side.
+ Set the name of the SSL :abbr:`CA (Certificate Authority)` PKI entry used for
+ authentication of the remote side. If an intermediate CA certificate is
+ specified, then all parent CA certificates that exist in the PKI, such as the
+ root CA or additional intermediate CAs, will automatically be used during
+ certificate validation to ensure that the full chain of trust is available.
- .. code-block:: none
-
- set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} eapol ca-cert-file /config/auth/ca.pem
-
-.. cfgcmd:: set interfaces {{ var0 }} <interface> {{ var2 }} {{ var3 }}
- {{ var5 }} {{ var6 }} eapol cert-file <file>
-
- SSL/x509 public certificate file provided by the client to authenticate
- against the 802.1x system.
+ Example:
.. code-block:: none
- set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} eapol cert-file /config/auth/public.pem
+ set pki ca eapol-server-intermediate-ca <Server intermediate CA contents>
+ set pki ca eapol-server-root-ca <Server root CA contents>
+ set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} eapol ca-certificate eapol-server-intermediate-ca
.. cfgcmd:: set interfaces {{ var0 }} <interface> {{ var2 }} {{ var3 }}
- {{ var5 }} {{ var6 }} eapol key-file <file>
+ {{ var5 }} {{ var6 }} eapol certificate <name>
+
+ Set the name of the x509 client keypair used to authenticate against the
+ 802.1x system. All parent CA certificates of the client certificate, such as
+ intermediate and root CAs, will be sent as part of the EAP-TLS handshake.
- SSL/x509 private certificate file provided by the client to authenticate
- against the 802.1x system.
+ Example:
.. code-block:: none
- set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} eapol key-file /config/auth/private.key
+ set pki ca eapol-client-intermediate-ca <Client intermediate CA contents>
+ set pki ca eapol-client-root-ca <Client root CA contents>
+ set pki certificate eapol-client certificate <Client certificate contents>
+ set pki certificate eapol-client private key <Client private key contents>
+ set interfaces {{ var0 }} {{ var1 }} {{ var2 }} {{ var4 }} {{ var5 }} {{ var7 }} eapol certificate eapol-client
diff --git a/docs/_include/vyos-1x b/docs/_include/vyos-1x
-Subproject 221aee86f4d4291434dc60569d3d58da99639ff
+Subproject 812d9770619b968b04961aebf3944fde13df491
diff --git a/docs/automation/cloud-init.rst b/docs/automation/cloud-init.rst
index 3ca8739b..6164068c 100644
--- a/docs/automation/cloud-init.rst
+++ b/docs/automation/cloud-init.rst
@@ -20,9 +20,11 @@ VyOS support three types of config sources.
* Metadata - Metadata is sourced by the cloud platform or hypervisor.
In some clouds, there is implemented as an HTTP endpoint at
``http://169.254.169.254``.
+
* Network configuration - This config source informs the system about the
network settings like IP addresses, routes, DNS. Available only in several
cloud and virtualization platforms.
+
* User-data - User-data is specified by the user. This config source offers the
ability to insert any CLI configuration commands into the configuration before
the first boot.
@@ -49,9 +51,9 @@ In VyOS, by default, enables only two modules:
* ``write_files`` - this module allows to insert any files into the filesystem
before the first boot, for example, pre-generated encryption keys,
certificates, or even a whole ``config.boot`` file.
+
* ``vyos_userdata`` - the module accepts a list of CLI configuration commands in
a ``vyos_config_commands`` section, which gives an easy way to configure the
-
system during deployment.
************************
@@ -69,15 +71,15 @@ Initial Configuration
************************
-The key used to designate a VyOS configuration is ``vyos_config_commands``. What
-follows is VyOS configuration using the "set-style" syntax. Both "set" and "delete"
-commands are supported.
+The key used to designate a VyOS configuration is ``vyos_config_commands``.
+What follows is VyOS configuration using the "set-style" syntax. Both "set"
+and "delete" commands are supported.
Commands requirements:
-* one command per line
-* if command ends in a value, it must be inside single quotes
-* a single-quote symbol is not allowed inside command or value
+* One command per line.
+* If command ends in a value, it must be inside single quotes.
+* A single-quote symbol is not allowed inside command or value.
The commands list produced by the ``show configuration commands`` command on a
VyOS router should comply with all the requirements, so it is easy to get a
@@ -86,7 +88,8 @@ proper commands list by copying it from another router.
The configuration specified in the cloud-config document overwrites default
configuration values and values configured via Metadata.
-Here is an example cloud-config that appends configuration at the time of first boot.
+Here is an example cloud-config that appends configuration at the time of
+first boot.
.. code-block:: yaml
@@ -105,9 +108,9 @@ System Defaults/Fallbacks
These are the VyOS defaults and fallbacks.
-* SSH is configured on port 22
-* ``vyos``/``vyos`` credentials if no others specified by data source
-* DHCP on first Ethernet interface if no network configuration is provided
+* SSH is configured on port 22.
+* ``vyos``/``vyos`` credentials if no others specified by data source.
+* DHCP on first Ethernet interface if no network configuration is provided.
All of these can be overridden using the configuration in user-data.
@@ -147,8 +150,8 @@ configuration.
run show ip bgp summary >> $filename
-If you need to gather information from linux commands to configure VyOS, you can
-execute commands and then configure VyOS in the same script.
+If you need to gather information from linux commands to configure VyOS, you
+can execute commands and then configure VyOS in the same script.
The following example sets the hostname based on the instance identifier
obtained from the EC2 metadata service.
@@ -211,8 +214,8 @@ the method with KVM to attach the ISO as a CD drive follows.
--noautoconsole
-For more information on the NoCloud data source, visit its
-`page <https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html>`_
+For more information on the NoCloud data source, visit its `page
+<https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html>`_
in the cloud-init documentation.
***************
@@ -231,3 +234,189 @@ most important data filtering output for ``vyos`` keyword:
sudo grep vyos /var/log/cloud-init.log
+*********************
+Cloud-init on Proxmox
+*********************
+
+Before starting, please refer to cloud-init `network-config-docs`_ in order to
+know how to import user and network configurations.
+
+Most important keys that needs to be considered:
+
+* VyOS configuration commands are defined in user-data file.
+
+* Networking configurations shouldn't be passed in user-data file.
+
+* If no networking configuration is provided, then dhcp client is going to be
+ enabled on first interface. Bare in mind that this configuration will be
+ inyected at an OS level, so don't expect to find dhcp client configuration
+ on vyos cli. Because of this behavior, in next example lab we will disable
+ dhcp-client configuration on eth0.
+
+ Also, this lab considers:
+
+* Proxmox IP address: **192.168.0.253/24**
+
+* Storaged used: volume local, which is mounted on directory **/var/lib/vz**,
+ and contains all type of content, including snippets.
+
+* Remove default dhcp client on first interface, and load other
+ configuration during first boot, using cloud-init.
+
+-------------------
+Generate qcow image
+-------------------
+
+A VyOS qcow image with cloud-init options is needed. This can be obteined
+using `vyos-vm-images`_ repo. After clonning the repo, edit the file
+**qemu.yml** and comment the **download-iso** role.
+
+In this lab, we are using 1.3.0 VyOS version and setting a disk of 10G.
+Download VyOS .iso file and save it as ``/tmp/vyos.iso``. Command used for
+generating qcow image:
+
+.. cfgcmd:: sudo ansible-playbook qemu.yml -e disk_size=10
+ -e iso_local=/tmp/vyos.iso -e grub_console=serial -e vyos_version=1.3.0
+ -e cloud_init=true -e cloud_init_ds=NoCloud
+
+File generated with previous command:
+``/tmp/vyos-1.3.0-cloud-init-10G-qemu.qcow2``
+
+Now, that file needs to be copied to proxmox server:
+
+.. cfgcmd:: sudo scp /tmp/vyos-1.3.0-cloud-init-10G-qemu.qcow2
+ root@192.168.0.253:/tmp/
+
+
+------------------------
+Prepare cloud-init files
+------------------------
+
+In Proxmox server three files are going to be used for this setup:
+
+* **network-config**: file that will indicate to avoid dhcp client on first
+ interface.
+
+* **user-data**: includes vyos-commands.
+
+* **meta-data**: empty file (required).
+
+In this lab, all files are located in ``/tmp/``. So, before going on, lets
+move to that directory:
+
+.. cfgcmd:: cd /tmp/
+
+**user-data** file must start with ``#cloud-config`` and contains
+vyos-commands. For example:
+
+.. code-block:: none
+
+ #cloud-config
+ vyos_config_commands:
+ - set system host-name 'vyos-BRAS'
+ - set system ntp server 1.pool.ntp.org
+ - set system ntp server 2.pool.ntp.org
+ - delete interfaces ethernet eth0 address 'dhcp'
+ - set interfaces ethernet eth0 address '198.51.100.2/30'
+ - set interfaces ethernet eth0 description 'WAN - ISP01'
+ - set interfaces ethernet eth1 address '192.168.25.1/24'
+ - set interfaces ethernet eth1 description 'Comming through VLAN 25'
+ - set interfaces ethernet eth2 address '192.168.26.1/24'
+ - set interfaces ethernet eth2 description 'Comming through VLAN 26'
+ - set protocols static route 0.0.0.0/0 next-hop '198.51.100.1'
+
+**network-config** file only has configuration that disables the automatic
+dhcp client on first interface.
+
+
+Content of network-config file:
+
+.. code-block:: none
+
+ version: 2
+ ethernets:
+ eth0:
+ dhcp4: false
+ dhcp6: false
+
+Finaly, file **meta-data** has no content, but it's required.
+
+---------------
+Create seed.iso
+---------------
+
+Once the three files were created, it's time to generate the ``seed.iso``
+image, which needs to be mounted to the new VM as a cd.
+
+Command for generating ``seed.iso``
+
+.. cfgcmd:: mkisofs -joliet -rock -volid "cidata" -output seed.iso meta-data
+ user-data network-config
+
+**NOTE**: be carefull while copying and pasting previous commands. Doble
+quotes may need to be corrected.
+
+---------------
+Creating the VM
+---------------
+
+Notes for this particular example, that may need to be modified in other
+setups:
+
+* VM ID: in this example, VM ID used is 555.
+
+* VM Storage: ``local`` volume is used.
+
+* ISO files storage: ``local`` volume is used for ``.iso`` file storage. In
+ this scenario ``local`` volume type is set to **directory**, abd attached to
+ ``/var/lib/vz``.
+
+* VM Resources: these parameters can be modified as needed.
+
+``seed.iso`` was previously created in directory ``/tmp/``. It's necessary to
+move it to ``/var/lib/vz/template/iso``
+
+.. cfgcmd:: mv /tmp/seed.iso /var/lib/vz/template/iso/
+
+On proxmox server:
+
+.. code-block:: none
+
+ ## Create VM, import disk and define boot order
+ qm create 555 --name vyos-1.3.0-cloudinit --memory 1024 --net0 virtio,bridge=vmbr0
+ qm importdisk 555 vyos-1.3.0-cloud-init-10G-qemu.qcow2 local
+ qm set 555 --virtio0 local:555/vm-555-disk-0.raw
+ qm set 555 --boot order=virtio0
+
+ ## Import seed.iso for cloud init
+ qm set 555 --ide2 media=cdrom,file=local:iso/seed.iso
+
+ ## Since this server has 1 nic, lets add network intefaces (vlan 25 and 26)
+ qm set 555 --net1 virtio,bridge=vmbr0,firewall=1,tag=25
+ qm set 555 --net2 virtio,bridge=vmbr0,firewall=1,tag=26
+
+-----------------------------
+Power on VM and verifications
+-----------------------------
+
+From cli or GUI, power on VM, and after it boots, verify configuration
+
+
+----------
+References
+----------
+
+* VyOS `cloud-init-docs`_.
+
+* Cloud-init `network-config-docs`_.
+
+* Proxmox `Cloud-init-Support`_.
+
+.. stop_vyoslinter
+
+.. _network-config-docs: https://cloudinit.readthedocs.io/en/latest/topics/network-config.html
+.. _vyos-vm-images: https://github.com/vyos/vyos-vm-images
+.. _cloud-init-docs: https://docs.vyos.io/en/equuleus/automation/cloud-init.html?highlight=cloud-init#vyos-cloud-init
+.. _Cloud-init-Support: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_cloud_init
+
+.. start_vyoslinter \ No newline at end of file
diff --git a/docs/changelog/1.3.rst b/docs/changelog/1.3.rst
index 8dcc08b0..ab805dac 100644
--- a/docs/changelog/1.3.rst
+++ b/docs/changelog/1.3.rst
@@ -8,6 +8,87 @@
_ext/releasenotes.py
+2022-02-13
+==========
+
+* :vytask:`T4242` (bug): ethernet speed/duplex can never be switched back to auto/auto
+* :vytask:`T4191` (bug): Lost access to host after VRF re-creating
+
+
+2022-02-11
+==========
+
+* :vytask:`T3872` (feature): Add configurable telegraf monitoring service
+* :vytask:`T4234` (bug): Show firewall partly broken in 1.3.x
+
+
+2022-02-10
+==========
+
+* :vytask:`T4165` (bug): Delete custom conntrack timeout firewall bug
+
+
+2022-02-08
+==========
+
+* :vytask:`T4227` (bug): Typo in help completion of hello-time option of bridge interface
+
+
+2022-02-07
+==========
+
+* :vytask:`T4233` (bug): ssh: sync regex for allow/deny usernames to "system login"
+* :vytask:`T4087` (feature): IPsec IKE-group proposals limit of 10 pieces
+
+
+2022-02-06
+==========
+
+* :vytask:`T4228` (bug): bond: OS error thrown when two bonds use the same member
+
+
+2022-02-05
+==========
+
+* :vytask:`T4226` (bug): VRRP transition-script does not work for groups name which contains -(minus) sign
+
+
+2022-02-04
+==========
+
+* :vytask:`T4196` (bug): DHCP server client-prefix-length parameter results in non-functional leases
+
+
+2022-02-03
+==========
+
+* :vytask:`T3643` (bug): show vpn ipsec sa doesn't show tunnels in "down" state
+
+
+2022-02-01
+==========
+
+* :vytask:`T4198` (bug): Error shown on commit
+
+
+2022-01-29
+==========
+
+* :vytask:`T4153` (bug): Monitor bandwidth-test initiate not working
+
+
+2022-01-28
+==========
+
+* :vytask:`T4184` (bug): NTP allow-clients address doesn't work it allows to use ntp server for all addresses
+
+
+2022-01-24
+==========
+
+* :vytask:`T4204` (feature): Update Accel-PPP to a newer revision
+
+
2022-01-17
==========
@@ -1418,7 +1499,7 @@
2021-02-16
==========
-* :vytask:`T3318` (feature): Update Linux Kernel to v5.4.172 / 5.10.92
+* :vytask:`T3318` (feature): Update Linux Kernel to v5.4.178 / 5.10.99
2021-02-14
diff --git a/docs/changelog/1.4.rst b/docs/changelog/1.4.rst
index 4d9c1ada..1f67151b 100644
--- a/docs/changelog/1.4.rst
+++ b/docs/changelog/1.4.rst
@@ -8,6 +8,114 @@
_ext/releasenotes.py
+2022-02-13
+==========
+
+* :vytask:`T4242` (bug): ethernet speed/duplex can never be switched back to auto/auto
+* :vytask:`T4191` (bug): Lost access to host after VRF re-creating
+
+
+2022-02-11
+==========
+
+* :vytask:`T3872` (feature): Add configurable telegraf monitoring service
+
+
+2022-02-10
+==========
+
+* :vytask:`T4235` (default): Add config tree diff algorithm
+
+
+2022-02-08
+==========
+
+* :vytask:`T4227` (bug): Typo in help completion of hello-time option of bridge interface
+
+
+2022-02-07
+==========
+
+* :vytask:`T4233` (bug): ssh: sync regex for allow/deny usernames to "system login"
+
+
+2022-02-06
+==========
+
+* :vytask:`T4223` (bug): policy route cannot have several entries with the same table
+* :vytask:`T4216` (bug): Firewall: can't use negated groups in firewall rules
+* :vytask:`T4178` (bug): policy based routing tcp flags issue
+* :vytask:`T4164` (bug): PBR: network groups (as well as address and port groups) don't resolve in `nftables_policy.conf`
+* :vytask:`T3970` (feature): Add support for op-mode PKI direct install into an active config session
+* :vytask:`T3828` (bug): ipsec: Subtle change in "pfs enable" behavior from equuleus -> sagitta
+* :vytask:`T4228` (bug): bond: OS error thrown when two bonds use the same member
+
+
+2022-02-05
+==========
+
+* :vytask:`T4226` (bug): VRRP transition-script does not work for groups name which contains -(minus) sign
+
+
+2022-02-04
+==========
+
+* :vytask:`T4196` (bug): DHCP server client-prefix-length parameter results in non-functional leases
+
+
+2022-02-03
+==========
+
+* :vytask:`T4218` (bug): firewall: rule name is not allowed to start with a number
+* :vytask:`T3643` (bug): show vpn ipsec sa doesn't show tunnels in "down" state
+
+
+2022-02-01
+==========
+
+* :vytask:`T4224` (bug): Ethernet interfaces configured for DHCP not working on latest rolling snapshot (vyos-1.4-rolling-202201291849-amd64.iso)
+* :vytask:`T4225` (bug): Performance degration with latest rolling release
+* :vytask:`T4220` (bug): Commit broke dhclient 78b247b724f74bdabab0706aaa7f5b00e5809bc1
+* :vytask:`T4138` (bug): NAT configuration allows to set incorrect port range and invalid port
+
+
+2022-01-29
+==========
+
+* :vytask:`T4153` (bug): Monitor bandwidth-test initiate not working
+
+
+2022-01-28
+==========
+
+* :vytask:`T4184` (bug): NTP allow-clients address doesn't work it allows to use ntp server for all addresses
+* :vytask:`T4217` (bug): firewall: port-group requires protocol to be set - but not in VyOS 1.3
+
+
+2022-01-27
+==========
+
+* :vytask:`T4213` (default): ipv6 policy routing not working anymore
+* :vytask:`T4188` (bug): Firewall does not correctly handle conntracking
+* :vytask:`T3762` (feature): Support network and address groups for policy ipv6-route
+* :vytask:`T3560` (feature): Ability to create groups of MAC addresses
+* :vytask:`T3495` (feature): Modernising port/protocol definitions
+
+
+2022-01-25
+==========
+
+* :vytask:`T4205` (feature): Disable Debian Version in SSH (DebianBanner->no)
+* :vytask:`T4131` (bug): Show firewall group incorrect format members
+
+
+2022-01-24
+==========
+
+* :vytask:`T4204` (feature): Update Accel-PPP to a newer revision
+* :vytask:`T1795` (default): Commit rollback by timeout
+
+
2022-01-23
==========
@@ -1661,7 +1769,7 @@
==========
* :vytask:`T3313` (bug): ospfv3 interface missing options
-* :vytask:`T3318` (feature): Update Linux Kernel to v5.4.172 / 5.10.92
+* :vytask:`T3318` (feature): Update Linux Kernel to v5.4.178 / 5.10.99
2021-02-15
diff --git a/docs/configuration/policy/local-route.rst b/docs/configuration/policy/local-route.rst
index 0b0122ab..e938f3cc 100644
--- a/docs/configuration/policy/local-route.rst
+++ b/docs/configuration/policy/local-route.rst
@@ -8,8 +8,8 @@ Policies for local traffic are defined in this section.
Configuration
*************
-Local Route
-===========
+Local Route IPv4
+================
.. cfgcmd:: set policy local-route rule <1-32765> set table <1-200|main>
@@ -18,3 +18,30 @@ Local Route
.. cfgcmd:: set policy local-route rule <1-32765> source <x.x.x.x|x.x.x.x/x>
Set source address or prefix to match.
+
+.. cfgcmd:: set policy local-route rule <1-32765> destination <x.x.x.x|x.x.x.x/x>
+
+ Set destination address or prefix to match.
+
+.. cfgcmd:: set policy local-route rule <1-32765> inbound-interface <interface>
+
+ Set inbound interface to match.
+
+Local Route IPv6
+================
+
+.. cfgcmd:: set policy local-route6 rule <1-32765> set table <1-200|main>
+
+ Set routing table to forward packet to.
+
+.. cfgcmd:: set policy local-route6 rule <1-32765> source <h:h:h:h:h:h:h:h|<h:h:h:h:h:h:h:h/x>
+
+ Set source address or prefix to match.
+
+.. cfgcmd:: set policy local-route6 rule <1-32765> destination <h:h:h:h:h:h:h:h|<h:h:h:h:h:h:h:h/x>
+
+ Set destination address or prefix to match.
+
+.. cfgcmd:: set policy local-route6 rule <1-32765> inbound-interface <interface>
+
+ Set inbound interface to match. \ No newline at end of file
diff --git a/docs/configuration/protocols/bfd.rst b/docs/configuration/protocols/bfd.rst
index 60f9ffd0..dac1bf0f 100644
--- a/docs/configuration/protocols/bfd.rst
+++ b/docs/configuration/protocols/bfd.rst
@@ -1,4 +1,4 @@
-:lastproofread: 2021-09-28
+:lastproofread: 2022-02-05
.. include:: /_include/need_improvement.txt
@@ -72,11 +72,11 @@ Enable BFD in BGP
Enable BFD in OSPF
------------------
-.. cfgcmd:: set interfaces ethernet <interface> ip ospf bfd
+.. cfgcmd:: set protocols ospf interface <interface> bfd
Enable BFD for OSPF on an interface
-.. cfgcmd:: set interfaces ethernet <interface> ipv6 ospfv3 bfd
+.. cfgcmd:: set protocols ospfv3 interface <interface> bfd
Enable BFD for OSPFv3 on an interface
@@ -93,7 +93,7 @@ Enable BFD in ISIS
Operational Commands
====================
-.. opcmd:: show protocols bfd peer
+.. opcmd:: show bfd peers
Show all BFD peers
diff --git a/docs/configuration/service/dhcp-server.rst b/docs/configuration/service/dhcp-server.rst
index 9d0e0855..357203fd 100644
--- a/docs/configuration/service/dhcp-server.rst
+++ b/docs/configuration/service/dhcp-server.rst
@@ -21,6 +21,16 @@ address.
Configuration
=============
+.. cfgcmd:: set service dhcp-server hostfile-update
+
+ Create DNS record per client lease, by adding clients to /etc/hosts file.
+ Entry will have format: `<shared-network-name>_<hostname>.<domain-name>`
+
+.. cfgcmd:: set service dhcp-server host-decl-name
+
+ Will drop `<shared-network-name>_` from client DNS record, using only the
+ host declaration name and domain: `<hostname>.<domain-name>`
+
.. cfgcmd:: set service dhcp-server shared-network-name <name> domain-name <domain-name>
The domain-name parameter should be the domain name that will be appended to
diff --git a/docs/configuration/vpn/ipsec.rst b/docs/configuration/vpn/ipsec.rst
index 590f6023..7194057d 100644
--- a/docs/configuration/vpn/ipsec.rst
+++ b/docs/configuration/vpn/ipsec.rst
@@ -174,8 +174,8 @@ On the LEFT:
# GRE tunnel
set interfaces tunnel tun0 encapsulation gre
- set interfaces tunnel tun0 local-ip 192.0.2.10
- set interfaces tunnel tun0 remote-ip 203.0.113.45
+ set interfaces tunnel tun0 source-address 192.0.2.10
+ set interfaces tunnel tun0 remote 203.0.113.45
set interfaces tunnel tun0 address 10.10.10.1/30
## IPsec
@@ -226,8 +226,8 @@ On the LEFT:
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 address 10.10.10.1/30
- set interfaces tunnel tun0 local-ip 192.168.99.1
- set interfaces tunnel tun0 remote-ip 192.168.99.2
+ set interfaces tunnel tun0 source-address 192.168.99.1
+ set interfaces tunnel tun0 remote 192.168.99.2
On the RIGHT:
@@ -237,8 +237,8 @@ On the RIGHT:
set interfaces tunnel tun0 encapsulation gre
set interfaces tunnel tun0 address 10.10.10.2/30
- set interfaces tunnel tun0 local-ip 192.168.99.2
- set interfaces tunnel tun0 remote-ip 192.168.99.1
+ set interfaces tunnel tun0 source-address 192.168.99.2
+ set interfaces tunnel tun0 remote 192.168.99.1
**Setting up IPSec**
@@ -247,7 +247,7 @@ tricky part is that pre-shared secret authentication doesn't work with dynamic
address, so we'll have to use RSA keys.
First, on both routers run the operational command "generate pki key-pair
-install <key-pair nam>>". You may choose different length than 2048 of course.
+install <key-pair name>". You may choose different length than 2048 of course.
.. code-block:: none
diff --git a/docs/documentation.rst b/docs/documentation.rst
index 00db6e56..77cd5cc4 100644
--- a/docs/documentation.rst
+++ b/docs/documentation.rst
@@ -91,7 +91,7 @@ access to the official codebase.
for writing our docs. Additional directives how to write in RST can be
obtained from reStructuredTextDirectives_.
-* Check your changes by locally building the documentation ``$ make html``.
+* Check your changes by locally building the documentation ``$ make livehtml``.
Sphinx will build the html files in the ``docs/_build`` folder. We provide
you with a Docker container for an easy-to-use user experience. Check the
README.md_ file of this repository.
diff --git a/docs/installation/virtual/proxmox.rst b/docs/installation/virtual/proxmox.rst
index 43c478f5..d3d77dc6 100644
--- a/docs/installation/virtual/proxmox.rst
+++ b/docs/installation/virtual/proxmox.rst
@@ -7,31 +7,49 @@ Running on Proxmox
Proxmox is an open-source platform for virtualization. Users with a support
subscription can download a qcow2 image that can be imported into Proxmox.
-Deploy VyOS from CLI
-====================
+Deploy VyOS from CLI with qcow2 image
+=====================================
+ A prebuilt image in qcow2 format is available to all VyOS subscribers for download and use directly within Proxmox.
-Copy the qcow2 image to a temporary directory on the Proxmox server.
-
-The commands below assume that virtual machine ID 200 is unused and that
-the user wants the disk stored in a storage pool called `local-lvm`.
+1. Copy the qcow2 image to a temporary directory on the Proxmox server.
+2. The commands below assume that virtual machine ID 200 is unused and that the user wants the disk stored in a storage pool called `local-lvm`.
.. code-block:: none
$ qm create 200 --name vyos2 --memory 2048 --net0 virtio,bridge=vmbr0
- $ qm importdisk 200 vyos-1.2.8-proxmox-2G.qcow2 local-lvm
+ $ qm importdisk 200 /path/to/image/vyos-1.2.8-proxmox-2G.qcow2 local-lvm
$ qm set 200 --virtio0 local-lvm:vm-200-disk-0
$ qm set 200 --boot order=virtio0
-Optionally, the user can attach a CDROM with an ISO as a cloud-init data
-source. The below command assumes the ISO has been uploaded to the
-`local` storage pool with the name `seed.iso`.
+3. Optionally, the user can attach a CDROM with an ISO as a cloud-init data source. The below command assumes the ISO has been uploaded to the `local` storage pool with the name `seed.iso`.
+
+.. code-block:: none
+
+ $ qm set 200 --ide2 media=cdrom,file=local:iso/seed.iso
+
+4. Start the virtual machine in the proxmox GUI or CLI using ``qm start 200``.
+
+
+
+Deploy VyOS from CLI with rolling release ISO
+=============================================
+
+1. Download the rolling release iso from https://vyos.net/get/nightly-builds/. Non-subscribers can always get the LTS release by building it from source. Instructions can be found in the :ref:`build` section of this manual. VyOS source code repository is available https://github.com/vyos/vyos-build.
+2. Prepare VM for installation from ISO media. The commands below assume that your iso is available in a storage pool 'local', that you want it to have a VM ID '200' and want to create a new disk on storage pool 'local-lvm' of size 15GB.
.. code-block:: none
- $ qm set 101 --ide2 media=cdrom,file=local:iso/seed.iso
+ qm create 200 --name vyos --memory 2048 --net0 virtio,bridge=vmbr0 --ide2 media=cdrom,file=local:iso/live-image-amd64.hybrid.iso --virtio0 local-lvm:15
+3. Start the VM using the command ``qm start 200`` or using the start button located in the proxmox GUI.
+4. Using the proxmox webGUI, open the virtual console for your newly created vm. Login username/password is ``vyos/vyos``.
+5. Once booted into the live system, type ``install image`` into the command line and follow the prompts to install VyOS to the virtual drive.
+6. After installation has completed, remove the installation iso using the GUI or ``qm set 200 --ide2 none``.
+7. Reboot the virtual machine using the GUI or ``qm reboot 200``.
+
+
+
-Start the virtual machine in the proxmox GUI or CLI using ``qm start 200``.
Visit https://www.proxmox.com/en/ for more information about the download
and installation of this hypervisor.
diff --git a/docs/introducing/history.rst b/docs/introducing/history.rst
index 9a13e2b3..054eecd6 100644
--- a/docs/introducing/history.rst
+++ b/docs/introducing/history.rst
@@ -4,44 +4,126 @@
History
#######
-VyOS is a Linux-based network operating system that provides software-based
-network routing, firewall, and VPN functionality.
-
-The VyOS project was started in late 2013 as a community fork of the
-`GPL <https://en.wikipedia.org/wiki/GNU_General_Public_License>`_ portions of
-Vyatta Core 6.6R1 with the goal of maintaining a free and open source network
-operating system in response to the decision to discontinue the community
-edition of Vyatta. Here everyone loves learning, older managers and new users.
-
-VyOS is primarily based on `Debian GNU/Linux <https://www.debian.org/>`_ and
-the `Quagga <http://www.nongnu.org/quagga/>`_ routing engine. Its configuration
-syntax and :ref:`cli` are loosely derived from Juniper JUNOS as modelled by the
-`XORP project <http://www.xorp.org/>`_, which was the original routing engine
-for Vyatta.
-
-In the 4.0 release of Vyatta, the routing engine was changed to Quagga. As of
-VyOS version 1.2, VyOS now uses `FRRouting <https://frrouting.org/>`_ as the
-routing engine.
-
-How is VyOS different from any other router distributions and platform?
-
-- It's more than just a firewall and VPN, VyOS includes extended routing
- capabilities like OSPFv2, OSPFv3, BGP, VRRP, and extensive route policy
- mapping and filtering
-- Unified command line interface in the style of hardware routers.
-- Scriptable CLI
-- Stateful configuration system: prepare changes and commit at once or discard,
- view previous revisions or rollback to them, archive revisions to remote
- server and execute hooks at commit time
-- Image-based upgrade: keep multiple versions on the same system and revert to
- previous image if a problem arises
-- Multiple VPN capabilities: OpenVPN, IPSec, Wireguard, DPMVPN, IKEv2 and more
-- DHCP, TFTP, mDNS repeater, broadcast relay and DNS forwarding support
-- Both IPv4 and IPv6 support
-- Runs on physical and virtual platforms alike: small x86 boards, big servers,
- KVM, Xen, VMware, Hyper-V, and more
-- Completely free and open source, with documented internal APIs and build
- procedures
-- Community driven. Patches are welcome and all code, bugs, and nightly builds
- are publicly accessible
+In the beginning...
+===================
+There once was a network operating system based on Debian GNU/Linux,
+called Vyatta. [*]_ 2006 onwards, it was a great free software
+alternative to Cisco IOS and Jupiter JUNOS. It came in two editions:
+Vyatta Core (previously Vyatta Community Edition) that was completely
+free software, and Vyatta Subscription Edition that had proprietary
+features and was only available to paying customers. [*]_
+
+Vyatta was acquired by Brocade Communication Systems in 2012. Shortly
+after, Brocade renamed Vyatta Subscription Edition to Brocade vRouter,
+discontinued Vyatta Core and shut down the community forum without a
+notice. The bug tracker and Git repositories followed next year.
+
+It's worth noting that by the time Brocade acquired Vyatta,
+development of Vyatta Core was already stagnated. Vyatta Subscription
+Edition (and thus, Vyatta development as a whole) had been replacing
+core components with proprietary software, meaning few features made
+it to Vyatta Core, and those that did were bug-ridden and hamstrung.
+
+In 2013, soon after Vyatta Core was abandoned, the community forked
+the last Vyatta Core version (6.6R1) and VyOS Project came into being.
+`Sentrium SL <https://blog.vyos.io/sentrium-what-sentrium>`_ was
+established by VyOS maintainers in 2014 to fund VyOS development by
+selling support, consulting services and prebuilt long-term support
+images.
+
+Brocade was acquired by Broadcom in 2016 and sold what remains of
+erstwhile Vyatta to AT&T in 2017, who in turn sold it to Ciena in 2021.
+
+
+Major releases
+==============
+
+VyOS major versions used to be named after elements in order of atomic
+numbers. With 1.2, this naming scheme was replaced with the much
+cooler scheme of Latin names of IAU designated constellations by solid
+angle area, starting from the smallest.
+
+Hydrogen (1.0)
+--------------
+
+Released just in time for holidays on 22 December 2013, Hydrogen was
+the first major VyOS release. It fixed features that were broken in
+Vyatta Core 6.6 (such as IPv4 BGP peer groups and DHCPv6 relay) and
+introduced command scripting, a task scheduler and web proxy LDAP
+authentication.
+
+Helium (1.1)
+------------
+
+Helium was released on 9 October 2014, exactly on the day VyOS Project
+first came into being in the previous year. Helium came with a lot of
+new features, including an event handler and support for L2TPv3,
+802.1ad QinQ and IGMP proxy, as well as experimental support for VXLAN
+and DMVPN (the latter of which was also broken in Vyatta Core due to
+its reliance on a proprietary NHRP implementation).
+
+Crux (1.2)
+----------
+
+Crux (the Southern Cross) came out on 28 January 2019 and was the
+first major release of VyOS as we know it today. The underlying
+Debian base was upgraded from Squeeze (6) to Jessie (8).
+
+Although Crux came with too many new features to mention here, some
+noteworthy ones are: an mDNS repeater, a broadcast relay,
+a high-performance PPPoE server, an HFSC scheduler, as well as support
+for Wireguard, unicast VRRP, RPKI for BGP and fully 802.1ad-compliant
+QinQ ethertype. The telnet server and support for P2P filtering were
+removed.
+
+Crux is the first version to feature the modular image build system.
+CLI definitions began to be written in the modern, verifiable XML
+templates. Python APIs were introduced for command scripting and
+configuration migration. Introduction of new Perl and shell code was
+proscribed and the rewriting of legacy Perl code in pure Python began
+with Crux.
+
+As of 2022, Crux is still supported and maintained.
+
+Equuleus (1.3)
+--------------
+
+The current long-term support version of VyOS, Equuleus (the Pony)
+came out on 21 December 2021, once again in time for the winter
+holidays.
+
+Equuleus brought many long-desired features with it, most notably
+an SSTP VPN server, an IPoE server, an OpenConnect VPN server and
+a serial console server, in addition to reworked support for WWAN
+interfaces, support for GENEVE and MACSec interfaces, VRF, IS-IS
+routing, preliminary support for MPLS and LDP, and many other
+initialisms.
+
+As of 2022, Equuleus is in the stable.
+
+Sagitta (1.4)
+-------------
+
+Sagitta (the Arrow) is the codename of the current development
+branch, so there's no VyOS 1.4 yet.
+
+A note on copyright
+===================
+
+Unlike Vyatta, VyOS never had (nor will ever have) proprietary code.
+The only proprietary material in VyOS is non-code assets, such as
+graphics and the trademark "VyOS". [*]_ This means you can build your
+own long-term support images (as the entire toolchain we use is free
+software) and even distribute them, given you rename it and remove
+such assets before building. Although note that we do not provide
+support for images distributed by a third-party. See the
+`artwork license <https://github.com/vyos/vyos-build/blob/current/LICENSE.artwork>`_
+and the end-user license agreement at ``/usr/share/doc/vyos/EULA`` in
+any pre-built image for more precise information.
+
+
+.. [*] From the Sanskrit adjective "Vyātta" (व्यात्त), meaning opened.
+.. [*] A business model comparable to that of Redis, rather than that
+ of VyOS today.
+.. [*] This is not unlike how Linus Torvalds owns the trademark "Linux".
diff --git a/vale.ini b/vale.ini
deleted file mode 100644
index b7dde1d8..00000000
--- a/vale.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-StylesPath = .github/styles
-MinAlertLevel = suggestion
-
-SkippedScopes = script, style, pre, figure, img, a, code
-
-
-[*.rst]
-BasedOnStyles = VyOS, Google
-
-Google.DateFormat = YES
-vale.GenderBias = NO
-vale.Hedging = NO
-vale.Redundancy = NO
-vale.Repetition = YES
-vale.Uncomparables = NO
-proselint.GenderBias = NO \ No newline at end of file