677a4592b18c08ddea737f8aca70bac0e9fc9313

Author
Ishaan Kapur <64529428+ishaanlabs-gg@users.noreply.github.com>
Committer
GitHub <noreply@github.com>
Date

Message

feat(ufw): complete route rule actions (#13848)

Diff

 1diff --git a/plugins/ufw/README.md b/plugins/ufw/README.md
 2index ffcc6d6f7191428006b3d3b88f93b7d1c7830a9f..5aeb7f1b938f4fce57dae2e86ce2779adcfbad3c 100644
 3--- a/plugins/ufw/README.md
 4+++ b/plugins/ufw/README.md
 5@@ -16,3 +16,4 @@ Some of the commands include:
 6 * `deny <port>/<optional: protocol>` add deny rule
 7 * `disable` disables the firewall
 8 * `enable` enables the firewall
 9+* `route` add route rule
10diff --git a/plugins/ufw/_ufw b/plugins/ufw/_ufw
11index f5ad033770b0a17c0f4cc6ddef0a94df04d6fe09..701231ec752a10dcb1d75e9c30a005b2c78f63be 100644
12--- a/plugins/ufw/_ufw
13+++ b/plugins/ufw/_ufw
14@@ -31,6 +31,7 @@ _1st_arguments=(
15   'reject:add reject rule'
16   'reload:reloads firewall'
17   'reset:reset firewall'
18+  'route:add route rule'
19   'show:show firewall report'
20   'status:show firewall status'
21   'version:display version information'
22@@ -43,6 +44,7 @@ _arguments -C \
23   '1:: :->cmds' \
24   '2:: :->subcmds' \
25   '3:: :->subsubcmds' \
26+  '4:: :->subsubsubcmds' \
27 && return 0
28 
29 local rules
30@@ -83,6 +85,17 @@ case "$state" in
31           'raw' 'builtins' 'before-rules' 'user-rules' 'after-rules' 'logging-rules' 'listening' 'added' \
32         && ret=0
33         ;;
34+      (route)
35+        _values 'route' \
36+          'delete[delete route rule]' \
37+          'insert[insert route rule at NUM]' \
38+          'prepend[prepend route rule]' \
39+          'allow[add allow route rule]' \
40+          'deny[add deny route rule]' \
41+          'reject[add reject route rule]' \
42+          'limit[add limit route rule]' \
43+        && ret=0
44+        ;;
45       (delete)
46         rules="$(_ufw_delete_rules)"
47         if [[ -n "$rules" ]] ; then
48@@ -109,6 +122,37 @@ case "$state" in
49           'incoming' 'outgoing' \
50         && ret=0
51         ;;
52+      (route)
53+        case "$line[2]" in
54+          (delete|prepend)
55+            _values 'route-action' \
56+              'allow[route allow rule]' \
57+              'deny[route deny rule]' \
58+              'reject[route reject rule]' \
59+              'limit[route limit rule]' \
60+            && ret=0
61+            ;;
62+          (insert)
63+            _message 'route rule number'
64+            ;;
65+        esac
66+        ;;
67+    esac
68+    ;;
69+  (subsubsubcmds)
70+    case "$line[1]" in
71+      (route)
72+        case "$line[2]" in
73+          (insert)
74+            _values 'route-action' \
75+              'allow[route allow rule]' \
76+              'deny[route deny rule]' \
77+              'reject[route reject rule]' \
78+              'limit[route limit rule]' \
79+            && ret=0
80+            ;;
81+        esac
82+        ;;
83     esac
84 esac
85