diff --git a/site/features.md b/site/features.md index de64420fe1..226005ce99 100644 --- a/site/features.md +++ b/site/features.md @@ -190,6 +190,11 @@ invocation: host2# weave expose 10.2.1.102/24 10.2.2.102/24 host2# weave hide 10.2.1.102/24 10.2.2.102/24 +Finally, exposed addresses can be added to weaveDNS by supplying a +hostname: + + host2# weave expose 10.2.1.102/24 -h exposed.weave.local + ### Service export Services running in containers on a weave network can be made diff --git a/weave b/weave index a46f965969..019f24cf5d 100755 --- a/weave +++ b/weave @@ -23,7 +23,7 @@ usage() { echo "weave start [ ...] " echo "weave attach [ ...] " echo "weave detach [ ...] " - echo "weave expose " + echo "weave expose [-h ]" echo "weave hide " echo "weave ps [ ...]" echo "weave status" @@ -760,7 +760,15 @@ case "$COMMAND" in ;; expose) [ $# -gt 0 ] || usage - for CIDR; do + collect_cidr_args "$@" + shift $CIDR_COUNT + if [ $# -eq 0 ]; then + FQDN="" + else + [ $# -eq 2 -a "$1" = "-h" ] || usage + FQDN="$2" + fi + for CIDR in $CIDR_ARGS; do validate_cidr $CIDR create_bridge --without-ethtool if ! ip addr show dev $BRIDGE | grep -qF $CIDR @@ -769,6 +777,9 @@ case "$COMMAND" in arp_update $BRIDGE $CIDR add_iptables_rule nat WEAVE -o $BRIDGE ! -s $CIDR -j MASQUERADE add_iptables_rule nat WEAVE -s $CIDR ! -o $BRIDGE -j MASQUERADE + if [ "$FQDN" ]; then + http_call $DNS_CONTAINER_NAME $DNS_HTTP_PORT PUT /name/weave:expose/${CIDR%/*} --data-urlencode "fqdn=$FQDN" 2>/dev/null || true + fi fi done ;; @@ -782,6 +793,7 @@ case "$COMMAND" in ip addr del dev $BRIDGE $CIDR delete_iptables_rule nat WEAVE -o $BRIDGE ! -s $CIDR -j MASQUERADE delete_iptables_rule nat WEAVE -s $CIDR ! -o $BRIDGE -j MASQUERADE + http_call $DNS_CONTAINER_NAME $DNS_HTTP_PORT DELETE /name/weave:expose/${CIDR%/*} 2>/dev/null || true fi done ;;