From 2abe0f2d527c7b3f6b97bd6519bf0e35a266ea68 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 7 Aug 2016 21:03:44 -0400 Subject: stuff --- src/grp-network/network/80-container-host0.network | 23 +++++++ src/grp-network/network/80-container-ve.network | 23 +++++++ src/grp-network/network/80-container-vz.network | 22 +++++++ src/grp-network/network/99-default.link | 3 + .../networkctl/networkctl.completion.bash | 70 ++++++++++++++++++++++ .../networkctl/networkctl.completion.zsh | 35 +++++++++++ .../systemd-networkd/systemd-networkd.sysusers | 8 +++ 7 files changed, 184 insertions(+) create mode 100644 src/grp-network/network/80-container-host0.network create mode 100644 src/grp-network/network/80-container-ve.network create mode 100644 src/grp-network/network/80-container-vz.network create mode 100644 src/grp-network/network/99-default.link create mode 100644 src/grp-network/networkctl/networkctl.completion.bash create mode 100644 src/grp-network/networkctl/networkctl.completion.zsh create mode 100644 src/grp-network/systemd-networkd/systemd-networkd.sysusers (limited to 'src/grp-network') diff --git a/src/grp-network/network/80-container-host0.network b/src/grp-network/network/80-container-host0.network new file mode 100644 index 0000000000..b012cf98cb --- /dev/null +++ b/src/grp-network/network/80-container-host0.network @@ -0,0 +1,23 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +# This network file matches the container-side of the virtual Ethernet link +# created by systemd-nspawn's --network-veth switch. See systemd-nspawn(1) for +# details. + +[Match] +Virtualization=container +Name=host0 + +[Network] +DHCP=yes +LinkLocalAddressing=yes +LLDP=yes +EmitLLDP=customer-bridge + +[DHCP] +UseTimezone=yes diff --git a/src/grp-network/network/80-container-ve.network b/src/grp-network/network/80-container-ve.network new file mode 100644 index 0000000000..ac796bfb07 --- /dev/null +++ b/src/grp-network/network/80-container-ve.network @@ -0,0 +1,23 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +# This network file matches the host-side of the virtual Ethernet link +# created by systemd-nspawn's --network-veth switch. See systemd-nspawn(1) for +# details. + +[Match] +Name=ve-* +Driver=veth + +[Network] +# Default to using a /28 prefix, giving up to 13 addresses per container. +Address=0.0.0.0/28 +LinkLocalAddressing=yes +DHCPServer=yes +IPMasquerade=yes +LLDP=yes +EmitLLDP=customer-bridge diff --git a/src/grp-network/network/80-container-vz.network b/src/grp-network/network/80-container-vz.network new file mode 100644 index 0000000000..3d532d6f60 --- /dev/null +++ b/src/grp-network/network/80-container-vz.network @@ -0,0 +1,22 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +# This network file matches the bridge interface created by systemd-nspawn's +# --network-zone= switch. See systemd-nspawn(1) for details. + +[Match] +Name=vz-* +Driver=bridge + +[Network] +# Default to using a /24 prefix, giving up to 253 addresses per virtual network. +Address=0.0.0.0/24 +LinkLocalAddressing=yes +DHCPServer=yes +IPMasquerade=yes +LLDP=yes +EmitLLDP=customer-bridge diff --git a/src/grp-network/network/99-default.link b/src/grp-network/network/99-default.link new file mode 100644 index 0000000000..79538f9b29 --- /dev/null +++ b/src/grp-network/network/99-default.link @@ -0,0 +1,3 @@ +[Link] +NamePolicy=kernel database onboard slot path +MACAddressPolicy=persistent diff --git a/src/grp-network/networkctl/networkctl.completion.bash b/src/grp-network/networkctl/networkctl.completion.bash new file mode 100644 index 0000000000..942c7e1c00 --- /dev/null +++ b/src/grp-network/networkctl/networkctl.completion.bash @@ -0,0 +1,70 @@ +# networkctl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 +} + +__get_links() { + networkctl list --no-legend --no-pager --all | { while read -r a b c; do echo " $b"; done; }; +} + +_networkctl() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-a --all -h --help --version --no-pager --no-legend' + [ARG]='' + ) + + local -A VERBS=( + [STANDALONE]='list lldp' + [LINKS]='status' + ) + + _init_completion || return + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[LINKS]}; then + comps=$( __get_links ) + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _networkctl networkctl diff --git a/src/grp-network/networkctl/networkctl.completion.zsh b/src/grp-network/networkctl/networkctl.completion.zsh new file mode 100644 index 0000000000..61f173b78e --- /dev/null +++ b/src/grp-network/networkctl/networkctl.completion.zsh @@ -0,0 +1,35 @@ +#compdef networkctl + +_networkctl_command(){ + local -a _networkctl_cmds + _networkctl_cmds=( + 'list:List existing links' + 'status:Show information about the specified links' + 'lldp:Show Link Layer Discovery Protocol status' + ) + if (( CURRENT == 1 )); then + _describe -t commands 'networkctl command' _networkctl_cmds + else + local curcontext="$curcontext" + local -a _links + cmd="${${_networkctl_cmds[(r)$words[1]:*]%%:*}}" + if [ $cmd = "status" ]; then + _links=( "${(foa)$(networkctl list --no-legend | awk 'BEGIN{OFS=":"} {sub(/[[ \t]+/, ""); print $2,$0}' 2>/dev/null)}" ) + if [[ -n "$_links" ]]; then + _describe -t links 'links' _links + else + _message "no links" + fi + else + _message "no more options" + fi + fi +} + +_arguments \ + {-a,--all}'[Show all links with status]' \ + '--no-pager[Do not pipe output into a pager]' \ + '--no-legend[Do not print the column headers]' \ + {-h,--help}'[Show this help]' \ + '--version[Show package version]' \ + '*::networkctl commands:_networkctl_command' diff --git a/src/grp-network/systemd-networkd/systemd-networkd.sysusers b/src/grp-network/systemd-networkd/systemd-networkd.sysusers new file mode 100644 index 0000000000..208148d6b8 --- /dev/null +++ b/src/grp-network/systemd-networkd/systemd-networkd.sysusers @@ -0,0 +1,8 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +u systemd-network - "systemd Network Management" -- cgit v1.2.3-54-g00ecf