1 |
# $Id$ |
# $Id$ |
2 |
# configures networking on the host via mysql db settings |
# configures networking on the host via mysql db settings |
3 |
|
|
|
get_network_settings() |
|
|
{ |
|
|
local x i all DB_NETWORK |
|
|
|
|
|
# all arrays: |
|
|
# -> hostname modules domain networking ip netmask dns gateway broadcast |
|
|
|
|
|
all=$(mysqldo "select iface, |
|
|
hostname, |
|
|
module, |
|
|
domain, |
|
|
networking, |
|
|
ip, |
|
|
netmask, |
|
|
dns, |
|
|
gateway, |
|
|
broadcast |
|
|
from cfg_network where serial='${ALX_SERIAL}'") |
|
|
|
|
|
# split'em up and put 'em in an array |
|
|
declare -i i=0 |
|
|
for x in ${all} |
|
|
do |
|
|
DB_NETWORK[${i}]="${x}" |
|
|
((i++)) |
|
|
done |
|
|
|
|
|
# and now put in usable var names and export them systemwide |
|
|
export ALX_IFACE="${DB_NETWORK[0]:=NULL}" |
|
|
export ALX_HOSTNAME="${DB_NETWORK[1]:=NULL}" |
|
|
export ALX_MODULE="${DB_NETWORK[2]:=NULL}" |
|
|
export ALX_DOMAIN="${DB_NETWORK[3]:=NULL}" |
|
|
export ALX_NETWORKING="${DB_NETWORK[4]:=NULL}" |
|
|
export ALX_IP="${DB_NETWORK[5]:=NULL}" |
|
|
export ALX_NETMASK="${DB_NETWORK[6]:=NULL}" |
|
|
export ALX_DNS="${DB_NETWORK[7]:=NULL}" |
|
|
export ALX_GATEWAY="${DB_NETWORK[8]:=NULL}" |
|
|
export ALX_BROADCAST="${DB_NETWORK[9]:=NULL}" |
|
|
|
|
|
# the new mac address hack |
|
|
export ALX_FORCEMACTO=$(mysqldo "select forcemacto from cfg_network where serial='${ALX_SERIAL}'") |
|
|
|
|
|
# wireless extensions |
|
|
export ALX_WIRELESS_BITRATE=$(mysqldo "select wireless_bitrate from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_CHANNEL=$(mysqldo "select wireless_channel from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_ESSID=$(mysqldo "select wireless_essid from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_FREQUENCY=$(mysqldo "select wireless_frequency from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_MODE=$(mysqldo "select wireless_mode from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_NICK=$(mysqldo "select wireless_nick from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_AUTH_MODE=$(mysqldo "select wireless_auth_mode from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_KEY_LENGTH=$(mysqldo "select wireless_key_length from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_KEY=$(mysqldo "select wireless_key from cfg_network where serial='${ALX_SERIAL}'") |
|
|
export ALX_WIRELESS_KEY_ASCII=$(mysqldo "select wireless_key_ascii from cfg_network where serial='${ALX_SERIAL}'") |
|
|
} |
|
|
|
|
4 |
config_networking() |
config_networking() |
5 |
{ |
{ |
6 |
local iface |
local iface |
7 |
local CONFIG |
local CONFIG |
8 |
|
|
9 |
# first of all get the vars |
# first of all get the vars |
10 |
get_network_settings |
evaluate_table cfg_network |
11 |
|
|
12 |
# get the right nic |
# get the right nic |
13 |
if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]] |
if [[ -z ${cfg_network_iface} ]] || [[ ${cfg_network_iface} = NULL ]] |
14 |
then |
then |
15 |
# default is 'eth0' |
# default is 'eth0' |
16 |
iface="eth0" |
iface="eth0" |
17 |
else |
else |
18 |
iface="${ALX_IFACE}" |
iface="${cfg_network_iface}" |
19 |
fi |
fi |
20 |
|
|
21 |
# remove all old nics and modules configs |
# remove all old nics and modules configs |
29 |
if [ ! -f /etc/modprobe.d/net.${iface}.conf ] || |
if [ ! -f /etc/modprobe.d/net.${iface}.conf ] || |
30 |
[[ ${iface} != $(cat /etc/modprobe.d/net.${iface}.conf | cut -d' ' -f2) ]] |
[[ ${iface} != $(cat /etc/modprobe.d/net.${iface}.conf | cut -d' ' -f2) ]] |
31 |
then |
then |
32 |
CONFIG=/etc/modprobe.d/net.${iface}.conf |
CONFIG="/etc/modprobe.d/net.${iface}.conf" |
33 |
clearconfig |
clearconfig |
34 |
addconfig "alias ${iface} ${ALX_MODULE}" |
addconfig "alias ${iface} ${cfg_network_module}" |
35 |
fi |
fi |
36 |
|
|
37 |
# update confd-networking default iface |
# update confd-networking default iface |
38 |
[ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH} |
[ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH} |
39 |
CONFIG=${SETTINGSPATH}/confd-networking |
CONFIG="${SETTINGSPATH}/confd-networking" |
40 |
clearconfig |
clearconfig |
41 |
addconfig "${iface}" |
addconfig "${iface}" |
42 |
|
|
43 |
# hostname && hosts |
# hostname && hosts |
44 |
CONFIG=/etc/hostname |
CONFIG="/etc/hostname" |
45 |
clearconfig |
clearconfig |
46 |
addconfig "${ALX_HOSTNAME}" |
addconfig "${cfg_network_hostname}" |
47 |
CONFIG=/etc/hosts |
CONFIG="/etc/hosts" |
48 |
clearconfig |
clearconfig |
49 |
addconfig -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" |
addconfig -e "127.0.0.1\tlocalhost.${cfg_network_domain}\tlocalhost\t${cfg_network_hostname}" |
50 |
case ${ALX_NETWORKING} in |
case ${cfg_network_networking} in |
51 |
static|STATIC) |
static|STATIC) |
52 |
# add hostname with valid ip to hosts |
# add hostname with valid ip to hosts |
53 |
addconfig -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" |
addconfig -e "${ALX_IP}\t${cfg_network_hostname}.${cfg_network_domain}\t${cfg_network_hostname}" |
54 |
;; |
;; |
55 |
esac |
esac |
56 |
|
|
57 |
# network devices |
# network devices |
58 |
|
|
59 |
# always on boot |
# always on boot |
60 |
CONFIG=/etc/conf.d/net.${iface} |
CONFIG="/etc/conf.d/net.${iface}" |
61 |
clearconfig |
clearconfig |
62 |
|
|
63 |
addconfig 'ONBOOT="yes"' |
addconfig 'ONBOOT="yes"' |
64 |
addconfig "NETWORKING=\"${ALX_NETWORKING}\"" |
addconfig "NETWORKING=\"${cfg_network_networking}\"" |
65 |
case ${ALX_NETWORKING} in |
case ${cfg_network_networking} in |
66 |
dhcp|DHCP) |
dhcp|DHCP) |
67 |
addconfig 'DHCP_PROG="/sbin/udhcpc"' |
addconfig "DHCP_PROG=\"${ALX_DHCP_PROG}\"" |
68 |
addconfig 'DHCP_STOP=""' |
addconfig "DHCP_STOP=\"${ALX_DHCP_STOP}\"" |
69 |
#timeout after 10 seconds |
#timeout after 10 seconds |
70 |
addconfig 'DHCP_START="-t 10"' |
addconfig "DHCP_START=\"${ALX_DHCP_START}\"" |
71 |
;; |
;; |
72 |
|
|
73 |
static|STATIC) |
static|STATIC) |
74 |
addconfig "IP=\"${ALX_IP}\"" |
addconfig "IP=\"${cfg_network_ip}\"" |
75 |
addconfig "NETMASK=\"${ALX_NETMASK}\"" |
addconfig "NETMASK=\"${cfg_network_netmask}\"" |
76 |
addconfig "BROADCAST=\"${ALX_BROADCAST}\"" |
addconfig "BROADCAST=\"${cfg_network_broadcast}\"" |
77 |
;; |
;; |
78 |
esac |
esac |
79 |
|
|
80 |
# force mac address override |
# force mac address override |
81 |
if [[ ${ALX_FORCEMACTO} != NULL ]] |
if [[ ${cfg_network_forcemacto} != NULL ]] && [[ ! -z ${cfg_network_forcemacto} ]] |
82 |
then |
then |
83 |
addconfig "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" |
addconfig "FORCE_MAC_TO=\"${cfg_network_forcemacto}\"" |
84 |
fi |
fi |
85 |
|
|
86 |
# wireless extensions |
# wireless extensions |
87 |
local value |
local value |
88 |
local var |
local var |
89 |
for var in ALX_WIRELESS_BITRATE \ |
for var in bitrate \ |
90 |
ALX_WIRELESS_CHANNEL \ |
channel \ |
91 |
ALX_WIRELESS_ESSID \ |
essid \ |
92 |
ALX_WIRELESS_FREQUENCY \ |
frequency \ |
93 |
ALX_WIRELESS_MODE \ |
mode \ |
94 |
ALX_WIRELESS_NICK \ |
nick \ |
95 |
ALX_WIRELESS_AUTH_MODE \ |
auth_mode \ |
96 |
ALX_WIRELESS_KEY_LENGTH \ |
key_length \ |
97 |
ALX_WIRELESS_KEY \ |
key \ |
98 |
ALX_WIRELESS_KEY_ASCII |
key_ascii |
99 |
do |
do |
100 |
# get the value of $var |
# get the value of $var |
101 |
eval value=\$$(echo ${var}) |
eval value="\${cfg_network_wireless_$(echo ${var})}" |
102 |
|
|
103 |
# write it only if not empty |
# write it only if not empty |
104 |
if [[ -n ${value} ]] && [[ ${value} != NULL ]] |
if [[ ! -z ${value} ]] && [[ ${value} != NULL ]] |
105 |
then |
then |
106 |
# remove ALX_ from var |
# add WIRELESS and use uppercases |
107 |
addconfig "${var/ALX_/}=\"${value}\"" |
addconfig "WIRELESS_$(echo ${var} | tr [[:lower:] [[:upper:]])=\"${value}\"" |
108 |
fi |
fi |
109 |
|
|
110 |
# clear value |
# clear value |
113 |
|
|
114 |
# FIXME !!! |
# FIXME !!! |
115 |
# setup wpa-driver (only zydas atm) |
# setup wpa-driver (only zydas atm) |
116 |
if [[ ${ALX_MODULE} = zd1211 ]] |
if [[ ${cfg_network_module} = zd1211 ]] |
117 |
then |
then |
118 |
addconfig "WIRELESS_WPA_DRIVER=zydas" |
addconfig "WIRELESS_WPA_DRIVER=zydas" |
119 |
fi |
fi |
120 |
|
|
121 |
CONFIG=/etc/conf.d/net.routes |
CONFIG="/etc/conf.d/net.routes" |
122 |
clearconfig |
clearconfig |
123 |
# gateway or gateway overrides |
# gateway or gateway overrides |
124 |
if [[ ${ALX_GATEWAY} != NULL ]] |
if [[ ${cfg_network_gateway} != NULL ]] && [[ ! -z ${cfg_network_gateway} ]] |
125 |
then |
then |
126 |
addconfig "default gw ${ALX_GATEWAY}" |
addconfig "default gw ${cfg_network_gateway}" |
127 |
fi |
fi |
128 |
|
|
129 |
CONFIG=/etc/resolv.conf |
CONFIG="/etc/resolv.conf" |
130 |
clearconfig |
clearconfig |
131 |
# nameserver or nameserver overrides |
# nameserver or nameserver overrides |
132 |
if [[ ${ALX_DNS} != NULL ]] |
if [[ ${cfg_network_dns} != NULL ]] && [[ ! -z ${cfg_network_dns} ]] |
133 |
then |
then |
134 |
addconfig "nameserver ${ALX_DNS}" |
addconfig "nameserver ${cfg_network_dns}" |
135 |
fi |
fi |
|
|
|
|
# unset all vars |
|
|
unset ALX_HOSTNAME |
|
|
unset ALX_MODULE |
|
|
unset ALX_DOMAIN |
|
|
unset ALX_NETWORKING |
|
|
unset ALX_IP |
|
|
unset ALX_NETMASK |
|
|
unset ALX_DNS |
|
|
unset ALX_GATEWAY |
|
|
unset ALX_BROADCAST |
|
|
unset ALX_FORCEMACTO |
|
|
unset ALX_IFACE |
|
|
unset ALX_WIRELESS_BITRATE |
|
|
unset ALX_WIRELESS_CHANNEL |
|
|
unset ALX_WIRELESS_ESSID |
|
|
unset ALX_WIRELESS_FREQUENCY |
|
|
unset ALX_WIRELESS_MODE |
|
|
unset ALX_WIRELESS_NICK |
|
|
unset ALX_WIRELESS_AUTH_MODE |
|
|
unset ALX_WIRELESS_KEY_LENGTH |
|
|
unset ALX_WIRELESS_KEY |
|
|
unset ALX_WIRELESS_KEY_ASCII |
|
136 |
} |
} |