summaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/completion/gobgp-completion.bash747
1 files changed, 490 insertions, 257 deletions
diff --git a/tools/completion/gobgp-completion.bash b/tools/completion/gobgp-completion.bash
index 7b706323..ddc0e9a7 100644
--- a/tools/completion/gobgp-completion.bash
+++ b/tools/completion/gobgp-completion.bash
@@ -1,34 +1,5 @@
#!/bin/bash
-__gobgp_q() {
- gobgp 2>/dev/null "$@"
-}
-
-__gobgp_q_neighbor() {
- neighbors=( $(__gobgp_q $url $port --quiet $q_type) )
- for n in ${neighbors[*]}; do
- commands+=($n)
- done
- neighbor_searched="True"
- last_command="gobgp_neighbor"
-}
-
-__gobgp_q_policy() {
- policies=( $(__gobgp_q $url $port --quiet policy $q_type) )
- for ps in ${policies[*]}; do
- commands+=($ps)
- done
- if [[ ${want_state} == "True" ]]; then
- want_state="False"
- fi
- if [[ ${last_command} == "gobgp_policy_routepolicy_add" ]]; then
- want_state="True"
- else
- policy_searched="True"
- fi
-}
-
-
__debug()
{
if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
@@ -36,6 +7,14 @@ __debug()
fi
}
+# Homebrew on Macs have version 1.3 of bash-completion which doesn't include
+# _init_completion. This is a very minimal version of that function.
+__my_init_completion()
+{
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev words cword
+}
+
__index_of_word()
{
local w word=$1
@@ -110,6 +89,12 @@ __handle_filename_extension_flag()
_filedir "@(${ext})"
}
+__handle_subdirs_in_dir_flag()
+{
+ local dir="$1"
+ pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1
+}
+
__handle_flag()
{
__debug "${FUNCNAME}: c is $c words[c] is ${words[c]}"
@@ -134,12 +119,7 @@ __handle_flag()
commands=()
fi
fi
- if [ ${words[(c-1)]} == "-u" ]; then
- url="-u ${words[(c)]}"
- fi
- if [ ${words[(c-1)]} == "-p" ]; then
- port="-p ${words[(c)]}"
- fi
+
# skip the flag itself
c=$((c+1))
@@ -167,23 +147,6 @@ __handle_command()
else
next_command="_${words[c]}"
fi
-
- if [[ ${last_command} == "gobgp_neighbor_someone" ]]; then
- commands=()
- fi
-
- if [[ ${neighbor_searched} == "True" ]]; then
- next_command="_${last_command}_someone"
- fi
-
- if [[ ${policy_searched} == "True" ]]; then
- commands=()
- fi
- if [[ ${want_state} == "True" ]]; then
- routepolicy="${words[c]}"
- next_command="_${last_command}_state"
- fi
-
c=$((c+1))
__debug "${FUNCNAME}: looking for ${next_command}"
declare -F $next_command >/dev/null && $next_command
@@ -216,8 +179,6 @@ _gobgp_global_rib_add()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -233,8 +194,6 @@ _gobgp_global_rib_del()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -254,8 +213,213 @@ _gobgp_global_rib()
flags+=("--address-family=")
two_word_flags+=("-a")
- flags+=("--help")
- flags+=("-h")
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_in_add()
+{
+ last_command="gobgp_global_policy_in_add"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_in_del()
+{
+ last_command="gobgp_global_policy_in_del"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_in_set()
+{
+ last_command="gobgp_global_policy_in_set"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_in()
+{
+ last_command="gobgp_global_policy_in"
+ commands=()
+ commands+=("add")
+ commands+=("del")
+ commands+=("set")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_import_add()
+{
+ last_command="gobgp_global_policy_import_add"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_import_del()
+{
+ last_command="gobgp_global_policy_import_del"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_import_set()
+{
+ last_command="gobgp_global_policy_import_set"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_import()
+{
+ last_command="gobgp_global_policy_import"
+ commands=()
+ commands+=("add")
+ commands+=("del")
+ commands+=("set")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_export_add()
+{
+ last_command="gobgp_global_policy_export_add"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_export_del()
+{
+ last_command="gobgp_global_policy_export_del"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_export_set()
+{
+ last_command="gobgp_global_policy_export_set"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy_export()
+{
+ last_command="gobgp_global_policy_export"
+ commands=()
+ commands+=("add")
+ commands+=("del")
+ commands+=("set")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_global_policy()
+{
+ last_command="gobgp_global_policy"
+ commands=()
+ commands+=("in")
+ commands+=("import")
+ commands+=("export")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
must_have_one_flag=()
must_have_one_noun=()
@@ -266,34 +430,22 @@ _gobgp_global()
last_command="gobgp_global"
commands=()
commands+=("rib")
+ commands+=("policy")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_neighbor_someone()
+_gobgp_neighbor()
{
- last_command="gobgp_neighbor_someone"
+ last_command="gobgp_neighbor"
commands=()
- commands+=("local")
- commands+=("adj-in")
- commands+=("adj-out")
- commands+=("reset")
- commands+=("softreset")
- commands+=("softresetin")
- commands+=("softresetout")
- commands+=("shutdown")
- commands+=("enable")
- commands+=("disable")
- commands+=("policy")
flags=()
two_word_flags=()
@@ -302,17 +454,49 @@ _gobgp_neighbor_someone()
flags+=("--address-family=")
two_word_flags+=("-a")
- flags+=("--help")
- flags+=("-h")
+ flags+=("--transport=")
+ two_word_flags+=("-t")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_neighbor()
+_gobgp_vrf_add()
{
- last_command="gobgp_neighbor"
+ last_command="gobgp_vrf_add"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_vrf_del()
+{
+ last_command="gobgp_vrf_del"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_vrf()
+{
+ last_command="gobgp_vrf"
commands=()
+ commands+=("add")
+ commands+=("del")
flags=()
two_word_flags=()
@@ -321,13 +505,9 @@ _gobgp_neighbor()
flags+=("--address-family=")
two_word_flags+=("-a")
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
- q_type="neighbor"
- __gobgp_q_neighbor
}
_gobgp_policy_prefix_add()
@@ -340,16 +520,14 @@ _gobgp_policy_prefix_add()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_prefix_del_all()
+_gobgp_policy_prefix_del()
{
- last_command="gobgp_policy_prefix_del_all"
+ last_command="gobgp_policy_prefix_del"
commands=()
flags=()
@@ -357,28 +535,21 @@ _gobgp_policy_prefix_del_all()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_prefix_del()
+_gobgp_policy_prefix_set()
{
- last_command="gobgp_policy_prefix_del"
+ last_command="gobgp_policy_prefix_set"
commands=()
- commands+=("all")
- q_type="prefix"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -390,16 +561,13 @@ _gobgp_policy_prefix()
commands=()
commands+=("add")
commands+=("del")
- q_type="prefix"
- __gobgp_q_policy
+ commands+=("set")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -415,16 +583,14 @@ _gobgp_policy_neighbor_add()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_neighbor_del_all()
+_gobgp_policy_neighbor_del()
{
- last_command="gobgp_policy_neighbor_del_all"
+ last_command="gobgp_policy_neighbor_del"
commands=()
flags=()
@@ -432,28 +598,21 @@ _gobgp_policy_neighbor_del_all()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_neighbor_del()
+_gobgp_policy_neighbor_set()
{
- last_command="gobgp_policy_neighbor_del"
+ last_command="gobgp_policy_neighbor_set"
commands=()
- commands+=("all")
- q_type="neighbor"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -465,24 +624,21 @@ _gobgp_policy_neighbor()
commands=()
commands+=("add")
commands+=("del")
- q_type="neighbor"
- __gobgp_q_policy
+ commands+=("set")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_aspath_add()
+_gobgp_policy_as-path_add()
{
- last_command="gobgp_policy_aspath_add"
+ last_command="gobgp_policy_as-path_add"
commands=()
flags=()
@@ -490,16 +646,14 @@ _gobgp_policy_aspath_add()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_aspath_del_all()
+_gobgp_policy_as-path_del()
{
- last_command="gobgp_policy_aspath_del_all"
+ last_command="gobgp_policy_as-path_del"
commands=()
flags=()
@@ -507,49 +661,39 @@ _gobgp_policy_aspath_del_all()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_aspath_del()
+_gobgp_policy_as-path_set()
{
- last_command="gobgp_policy_aspath_del"
+ last_command="gobgp_policy_as-path_set"
commands=()
- commands+=("all")
- q_type="aspath"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_aspath()
+_gobgp_policy_as-path()
{
- last_command="gobgp_policy_aspath"
+ last_command="gobgp_policy_as-path"
commands=()
commands+=("add")
commands+=("del")
- q_type="aspath"
- __gobgp_q_policy
+ commands+=("set")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -565,16 +709,14 @@ _gobgp_policy_community_add()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_community_del_all()
+_gobgp_policy_community_del()
{
- last_command="gobgp_policy_community_del_all"
+ last_command="gobgp_policy_community_del"
commands=()
flags=()
@@ -582,28 +724,21 @@ _gobgp_policy_community_del_all()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_community_del()
+_gobgp_policy_community_set()
{
- last_command="gobgp_policy_community_del"
+ last_command="gobgp_policy_community_set"
commands=()
- commands+=("all")
- q_type="community"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -615,24 +750,21 @@ _gobgp_policy_community()
commands=()
commands+=("add")
commands+=("del")
- q_type="community"
- __gobgp_q_policy
+ commands+=("set")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_extcommunity_add()
+_gobgp_policy_ext-community_add()
{
- last_command="gobgp_policy_extcommunity_add"
+ last_command="gobgp_policy_ext-community_add"
commands=()
flags=()
@@ -640,16 +772,14 @@ _gobgp_policy_extcommunity_add()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_extcommunity_del_all()
+_gobgp_policy_ext-community_del()
{
- last_command="gobgp_policy_extcommunity_del_all"
+ last_command="gobgp_policy_ext-community_del"
commands=()
flags=()
@@ -657,167 +787,131 @@ _gobgp_policy_extcommunity_del_all()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_extcommunity_del()
+_gobgp_policy_ext-community_set()
{
- last_command="gobgp_policy_extcommunity_del"
+ last_command="gobgp_policy_ext-community_set"
commands=()
- commands+=("all")
- q_type="extcommunity"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_extcommunity()
+_gobgp_policy_ext-community()
{
- last_command="gobgp_policy_extcommunity"
+ last_command="gobgp_policy_ext-community"
commands=()
commands+=("add")
commands+=("del")
- q_type="extcommunity"
- __gobgp_q_policy
+ commands+=("set")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_routepolicy_add_state()
+_gobgp_policy_statement_add()
{
- last_command="gobgp_policy_routepolicy_add_stat"
+ last_command="gobgp_policy_statement_add"
commands=()
- q_type="routepolicy ${routepolicy}"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--a-community=")
- flags+=("--a-med=")
- flags+=("--a-asprepend=")
- flags+=("--a-route=")
- flags+=("--c-aslen=")
- flags+=("--c-aspath=")
- flags+=("--c-community=")
- flags+=("--c-extcommunity=")
- flags+=("--c-neighbor=")
- flags+=("--c-option=")
- flags+=("--c-prefix=")
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_routepolicy_add()
+_gobgp_policy_statement_del()
{
- last_command="gobgp_policy_routepolicy_add"
+ last_command="gobgp_policy_statement_del"
commands=()
- q_type="routepolicy"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--a-community=")
- flags+=("--a-med=")
- flags+=("--a-asprepend=")
- flags+=("--a-route=")
- flags+=("--c-aslen=")
- flags+=("--c-aspath=")
- flags+=("--c-community=")
- flags+=("--c-extcommunity=")
- flags+=("--c-neighbor=")
- flags+=("--c-option=")
- flags+=("--c-prefix=")
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_routepolicy_del_all()
+_gobgp_policy_statement()
{
- last_command="gobgp_policy_routepolicy_del_all"
+ last_command="gobgp_policy_statement"
commands=()
+ commands+=("add")
+ commands+=("del")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_routepolicy_del()
+_gobgp_policy_add()
{
- last_command="gobgp_policy_routepolicy_del"
+ last_command="gobgp_policy_add"
commands=()
- commands+=("all")
- q_type="routepolicy"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_policy_routepolicy()
+_gobgp_policy_del()
{
- last_command="gobgp_policy_routepolicy"
+ last_command="gobgp_policy_del"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_policy_set()
+{
+ last_command="gobgp_policy_set"
commands=()
- commands+=("add")
- commands+=("del")
- q_type="routepolicy"
- __gobgp_q_policy
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -829,18 +923,19 @@ _gobgp_policy()
commands=()
commands+=("prefix")
commands+=("neighbor")
- commands+=("aspath")
+ commands+=("as-path")
commands+=("community")
- commands+=("extcommunity")
- commands+=("routepolicy")
+ commands+=("ext-community")
+ commands+=("statement")
+ commands+=("add")
+ commands+=("del")
+ commands+=("set")
flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -856,8 +951,8 @@ _gobgp_monitor_global_rib()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
+ flags+=("--address-family=")
+ two_word_flags+=("-a")
must_have_one_flag=()
must_have_one_noun=()
@@ -874,8 +969,6 @@ _gobgp_monitor_global()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -891,8 +984,6 @@ _gobgp_monitor_neighbor()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
@@ -910,16 +1001,146 @@ _gobgp_monitor()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
must_have_one_flag=()
must_have_one_noun=()
}
-_gobgp_help()
+_gobgp_mrt_dump_rib_global()
+{
+ last_command="gobgp_mrt_dump_rib_global"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_mrt_dump_rib_neighbor()
+{
+ last_command="gobgp_mrt_dump_rib_neighbor"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_mrt_dump_rib()
+{
+ last_command="gobgp_mrt_dump_rib"
+ commands=()
+ commands+=("global")
+ commands+=("neighbor")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+ flags+=("--address-family=")
+ two_word_flags+=("-a")
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_mrt_dump()
+{
+ last_command="gobgp_mrt_dump"
+ commands=()
+ commands+=("rib")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+ flags+=("--format=")
+ two_word_flags+=("-f")
+ flags+=("--outdir=")
+ two_word_flags+=("-o")
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_mrt_inject_global()
+{
+ last_command="gobgp_mrt_inject_global"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_mrt_inject()
+{
+ last_command="gobgp_mrt_inject"
+ commands=()
+ commands+=("global")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_mrt()
+{
+ last_command="gobgp_mrt"
+ commands=()
+ commands+=("dump")
+ commands+=("inject")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_rpki_server()
+{
+ last_command="gobgp_rpki_server"
+ commands=()
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_rpki_table()
{
- last_command="gobgp_help"
+ last_command="gobgp_rpki_table"
commands=()
flags=()
@@ -927,8 +1148,25 @@ _gobgp_help()
flags_with_completion=()
flags_completion=()
- flags+=("--help")
- flags+=("-h")
+ flags+=("--address-family=")
+ two_word_flags+=("-a")
+
+ must_have_one_flag=()
+ must_have_one_noun=()
+}
+
+_gobgp_rpki()
+{
+ last_command="gobgp_rpki"
+ commands=()
+ commands+=("server")
+ commands+=("table")
+
+ flags=()
+ two_word_flags=()
+ flags_with_completion=()
+ flags_completion=()
+
must_have_one_flag=()
must_have_one_noun=()
@@ -936,16 +1174,15 @@ _gobgp_help()
_gobgp()
{
- url=""
- port=""
- q_type=""
last_command="gobgp"
commands=()
commands+=("global")
commands+=("neighbor")
+ commands+=("vrf")
commands+=("policy")
commands+=("monitor")
- commands+=("help")
+ commands+=("mrt")
+ commands+=("rpki")
flags=()
two_word_flags=()
@@ -957,8 +1194,6 @@ _gobgp()
flags+=("-d")
flags+=("--gen-cmpl")
flags+=("-c")
- flags+=("--help")
- flags+=("-h")
flags+=("--host=")
two_word_flags+=("-u")
flags+=("--json")
@@ -975,7 +1210,11 @@ _gobgp()
__start_gobgp()
{
local cur prev words cword
- _init_completion -s || return
+ if declare -F _init_completions >/dev/null 2>&1; then
+ _init_completion -s || return
+ else
+ __my_init_completion || return
+ fi
local c=0
local flags=()
@@ -988,12 +1227,6 @@ __start_gobgp()
local last_command
local nouns=()
- neighbor_searched="False"
- policy_searched="False"
- want_state="False"
- routepolicy=""
-
-
__handle_word
}