Commit 942a98aa authored by nanahira's avatar nanahira

allow no origin

parent d28267b2
...@@ -24,24 +24,27 @@ handle_gateway() { ...@@ -24,24 +24,27 @@ handle_gateway() {
GATEWAY_ID=$1 GATEWAY_ID=$1
GATEWAY_ADDRESS=$2 GATEWAY_ADDRESS=$2
GATEWAY_MAC=$3 GATEWAY_MAC=$3
GATEWAY_NO_ORIGIN=$4
GATEWAY_NEXT_HOP_MARK=$[$GATEWAY_ID + 1100] GATEWAY_NEXT_HOP_MARK=$[$GATEWAY_ID + 1100]
BRIDGE_IP=$(ip -4 addr show dev "$BRIDGE_NAME" | grep 'inet ' | awk '{print $2}') BRIDGE_IP=$(ip -4 addr show dev "$BRIDGE_NAME" | grep 'inet ' | awk '{print $2}')
if [[ "$GATEWAY_ADDRESS" -eq "_use_first" ]]; then if [[ "_$GATEWAY_ADDRESS" -eq "__use_first" ]]; then
GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $5}') GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $5}')
fi fi
if [[ "$GATEWAY_ADDRESS" -eq "_use_last" ]]; then if [[ "_$GATEWAY_ADDRESS" -eq "__use_last" ]]; then
GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $7}') GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $7}')
fi fi
ip route add default via "$GATEWAY_ADDRESS" table "$GATEWAY_NEXT_HOP_MARK" ip route add default via "$GATEWAY_ADDRESS" table "$GATEWAY_NEXT_HOP_MARK"
ip route add default via "$GATEWAY_ADDRESS" metric "$GATEWAY_NEXT_HOP_MARK" ip route add default via "$GATEWAY_ADDRESS" metric "$GATEWAY_NEXT_HOP_MARK"
if [[ "$GATEWAY_NO_ORIGIN" -eq 0 ]]; then
ip rule add pref 100 fwmark "$GATEWAY_NEXT_HOP_MARK" lookup "$GATEWAY_NEXT_HOP_MARK" ip rule add pref 100 fwmark "$GATEWAY_NEXT_HOP_MARK" lookup "$GATEWAY_NEXT_HOP_MARK"
eth_origin -A "$BRIDGE_NAME" "$GATEWAY_ID" "$GATEWAY_ADDRESS" "$GATEWAY_MAC" eth_origin -A "$BRIDGE_NAME" "$GATEWAY_ID" "$GATEWAY_ADDRESS" "$GATEWAY_MAC"
fi
} }
{% if br.gateways %} {% if br.gateways %}
# Gateways # Gateways
{% for gateway in br.gateways %} {% for gateway in br.gateways %}
handle_gateway {{gateway.id}} {{gateway.address}}{% if gateway.mac %} {{gateway.mac}} {% endif %} handle_gateway {{gateway.id}} {{gateway.address}} {% if gateway.mac %}{{gateway.mac}}{% else %}"unknown"{% endif %} {% if gateway.noOrigin %}1{% else %}0{% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
......
...@@ -16,22 +16,26 @@ handle_gateway() { ...@@ -16,22 +16,26 @@ handle_gateway() {
GATEWAY_ID=$1 GATEWAY_ID=$1
GATEWAY_ADDRESS=$2 GATEWAY_ADDRESS=$2
GATEWAY_MAC=$3 GATEWAY_MAC=$3
GATEWAY_NO_ORIGIN=$4
GATEWAY_NEXT_HOP_MARK=$[$GATEWAY_ID + 1100] GATEWAY_NEXT_HOP_MARK=$[$GATEWAY_ID + 1100]
BRIDGE_IP=$(ip -4 addr show dev "$BRIDGE_NAME" | grep 'inet ' | awk '{print $2}') BRIDGE_IP=$(ip -4 addr show dev "$BRIDGE_NAME" | grep 'inet ' | awk '{print $2}')
if [[ "$GATEWAY_ADDRESS" -eq "_use_first" ]]; then if [[ "_$GATEWAY_ADDRESS" -eq "__use_first" ]]; then
GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $5}') GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $5}')
fi fi
if [[ "$GATEWAY_ADDRESS" -eq "_use_last" ]]; then if [[ "_$GATEWAY_ADDRESS" -eq "__use_last" ]]; then
GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $7}') GATEWAY_ADDRESS=$(subnetcalc "$BRIDGE_IP" -n | grep "Host Range" | awk '{print $7}')
fi fi
if [[ "$GATEWAY_NO_ORIGIN" -eq 0 ]]; then
ip rule del pref 100 fwmark "$GATEWAY_NEXT_HOP_MARK" lookup "$GATEWAY_NEXT_HOP_MARK" ip rule del pref 100 fwmark "$GATEWAY_NEXT_HOP_MARK" lookup "$GATEWAY_NEXT_HOP_MARK"
eth_origin -D "$BRIDGE_NAME" "$GATEWAY_ID" "$GATEWAY_ADDRESS" "$GATEWAY_MAC" eth_origin -D "$BRIDGE_NAME" "$GATEWAY_ID" "$GATEWAY_ADDRESS" "$GATEWAY_MAC"
fi
} }
{% if br.gateways %} {% if br.gateways %}
# Gateways # Gateways
{% for gateway in br.gateways %} {% for gateway in br.gateways %}
handle_gateway {{gateway.id}} {{gateway.address}}{% if gateway.mac %} {{gateway.mac}} {% endif %} handle_gateway {{gateway.id}} {{gateway.address}} {% if gateway.mac %}{{gateway.mac}}{% else %}"unknown"{% endif %} {% if gateway.noOrigin %}1{% else %}0{% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
......
...@@ -36,7 +36,7 @@ eth_origin() { ...@@ -36,7 +36,7 @@ eth_origin() {
GATEWAY_ADDRESS=$4 GATEWAY_ADDRESS=$4
GATEWAY_MAC=$5 GATEWAY_MAC=$5
MARK=$[1100 + $GATEWAY_ID] MARK=$[1100 + $GATEWAY_ID]
if [[ -z "$GATEWAY_MAC" ]]; then if [[ "$GATEWAY_MAC" -eq "unknown" ]]; then
ping "$GATEWAY_ADDRESS" -c 1 ping "$GATEWAY_ADDRESS" -c 1
NEIGH_LINE=$(ip neigh show "$GATEWAY_ADDRESS") NEIGH_LINE=$(ip neigh show "$GATEWAY_ADDRESS")
GATEWAY_MAC=$(echo $NEIGH_LINE | awk '{print $5}') GATEWAY_MAC=$(echo $NEIGH_LINE | awk '{print $5}')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment