#!/bin/bash # -------------------------------------------------------------------------- # # Copyright 2010-2014, C12G Labs S.L. # # # # Licensed under the Apache License, Version 2.0 (the "License"); you may # # not use this file except in compliance with the License. You may obtain # # a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # #--------------------------------------------------------------------------- # # Gets IP address from a given MAC mac2ip() { mac=$1 let ip_a=0x`echo $mac | cut -d: -f 3` let ip_b=0x`echo $mac | cut -d: -f 4` let ip_c=0x`echo $mac | cut -d: -f 5` let ip_d=0x`echo $mac | cut -d: -f 6` ip="$ip_a.$ip_b.$ip_c.$ip_d" echo $ip } # Gets the network part of an IP get_network() { network=$(get_iface_var "NETWORK") if [ -z "$network" ]; then network="$(echo $IP | cut -d'.' -f1,2,3).0" fi echo $network } # Gets the network mask get_mask() { mask=$(get_iface_var "MASK") if [ -z "$mask" ]; then mask="255.255.255.0" fi echo $mask } # Gets device MTU get_mtu() { mtu=$(get_iface_var "MTU") echo $mtu } is_gateway() { if [ -z "$GATEWAY_IFACE_NUM" ]; then true else [ "$IFACE_NUM" = "$GATEWAY_IFACE_NUM" ] fi } # Gets the network gateway get_gateway() { if is_gateway; then gateway=$(get_iface_var "GATEWAY") if [ -z "$gateway" ]; then if [ "$DEV" = "eth0" ]; then net_prefix=$(echo $NETWORK | cut -d'.' -f1,2,3) gateway="${net_prefix}.1" fi fi echo $gateway fi } # Gets the network gateway6 get_gateway6() { if is_gateway; then get_iface_var "GATEWAY6" fi } get_ip() { ip=$(get_iface_var "IP") if [ -z "$ip" ]; then ip=$(mac2ip $MAC) fi echo $ip } get_iface_var() { var_name="${UPCASE_DEV}_$1" var=$(eval "echo \"\${$var_name}\"") echo $var } export DNS_VARIABLES="DNS $(env | sed 's/=.*$//' | grep -E '^ETH[0-9]+_DNS$' | sort)" export SEARCH_VARIABLES="SEARCH_DOMAIN $(env | sed 's/=.*$//' | grep -E '^ETH[0-9]+_SEARCH_DOMAIN$' | sort)" nameservers=$( dns=() for var in ${DNS_VARIABLES}; do value=$(eval "echo \"\${$var}\"") if [ -n "$value" ]; then dns+=("$value") fi done echo $(printf " %s" "${dns[@]}") ) searchdomains=$( search=() for var in ${SEARCH_VARIABLES}; do value=$(eval "echo \"\${$var}\"") if [ -n "$value" ]; then search+=("$value") fi done echo $(printf " %s" "${search[@]}") ) gen_iface_conf() { cat < /etc/network/interfaces echo "source /etc/network/interfaces.d/*.cfg" >> /etc/network/interfaces } deactivate_network() { . /etc/os-release if [ $ID = "ubuntu" ]; then IFACES=`/sbin/ifquery --list -a` for i in $IFACES; do if [ $i != 'lo' ]; then /sbin/ifdown $i /sbin/ip addr flush dev $i fi done else service networking stop fi } activate_network() { . /etc/os-release if [ $ID = "ubuntu" ]; then IFACES=`/sbin/ifquery --list -a` for i in $IFACES; do /sbin/ifup $i done else service networking stop sleep 1 service networking start fi sleep 2 } deactivate_network configure_network activate_network