Factor out CIDR arg parsing

This commit is contained in:
Adam Harrison committed 2015-03-30 17:49:44 +01:00
1 parent c1089e8447
commit 772e298340
1 file changed
+27 -29
+27 -29
View File
@@ -138,6 +138,16 @@ validate_cidr() {
fi
}
collect_cidr_args() {
CIDR_ARGS=""
CIDR_COUNT=0
while is_cidr "$1"; do
CIDR_ARGS="$CIDR_ARGS $1"
CIDR_COUNT=$(($CIDR_COUNT + 1))
shift 1
done
}
run_iptables() {
# -w is recent addition to iptables
if [ -z "$CHECKED_IPTABLES_W" ] ; then
@@ -660,18 +670,15 @@ case "$COMMAND" in
DNS_ARGS=$(exec_remote dns-args "$@")
[ "$1" = "--with-dns" ] && shift 1
fi
CIDRS=""
while is_cidr "$1"; do
CIDRS="$CIDRS $1"
shift 1
done
collect_cidr_args "$@"
shift $CIDR_COUNT
CONTAINER=$(docker run $DNS_ARGS -d "$@")
if [ "$LOCAL" = "--local" ]; then
create_bridge
with_container_netns $CONTAINER attach $CIDRS >/dev/null
tell_dns PUT $CONTAINER_ID $CIDRS
with_container_netns $CONTAINER attach $CIDR_ARGS >/dev/null
tell_dns PUT $CONTAINER_ID $CIDR_ARGS
else
exec_remote attach $CIDRS $CONTAINER
exec_remote attach $CIDR_ARGS $CONTAINER
fi
echo $CONTAINER
;;
@@ -681,40 +688,31 @@ case "$COMMAND" in
;;
start)
[ $# -gt 1 ] || usage
CIDRS=""
while is_cidr "$1"; do
CIDRS="$CIDRS $1"
shift 1
done
collect_cidr_args "$@"
shift $CIDR_COUNT
CONTAINER_ID="$1"
create_bridge
CONTAINER=$(docker start $CONTAINER_ID)
with_container_netns $CONTAINER_ID attach $CIDRS >/dev/null
tell_dns PUT $CONTAINER_ID $CIDRS
with_container_netns $CONTAINER_ID attach $CIDR_ARGS >/dev/null
tell_dns PUT $CONTAINER_ID $CIDR_ARGS
echo $CONTAINER
;;
attach)
[ $# -gt 1 ] || usage
CIDRS=""
while is_cidr "$1"; do
CIDRS="$CIDRS $1"
shift 1
done
collect_cidr_args "$@"
shift $CIDR_COUNT
CONTAINER_ID="$1"
create_bridge
with_container_netns $CONTAINER_ID attach $CIDRS >/dev/null
tell_dns PUT $CONTAINER_ID $CIDRS
with_container_netns $CONTAINER_ID attach $CIDR_ARGS >/dev/null
tell_dns PUT $CONTAINER_ID $CIDR_ARGS
;;
detach)
[ $# -gt 1 ] || usage
CIDRS=""
while is_cidr "$1"; do
CIDRS="$CIDRS $1"
shift 1
done
collect_cidr_args "$@"
shift $CIDR_COUNT
CONTAINER_ID="$1"
with_container_netns $CONTAINER_ID detach $CIDRS >/dev/null
tell_dns DELETE $CONTAINER_ID $CIDRS
with_container_netns $CONTAINER_ID detach $CIDR_ARGS >/dev/null
tell_dns DELETE $CONTAINER_ID $CIDR_ARGS
;;
expose)
[ $# -eq 1 ] || usage