3 # Konfiguriere uebliche Opennet-Interfaces sowie ein lokales Interface. 5 # Dieses Skript wird nur ein einziges Mal nach einem Upgrade oder der Erstinstallation ausgefuehrt: 6 # http://wiki.openwrt.org/doc/uci#defaults 10 # shellcheck source=opennet/packages/on-core/files/usr/lib/opennet/on-helper.sh 11 .
"${IPKG_INSTROOT:-}/usr/lib/opennet/on-helper.sh" 14 OPENWRT_DEFAULT_LOCAL_IP=192.168.1.1
17 configure_local_network() {
18 local uci_prefix=
"network.$NETWORK_LOCAL" 19 # wurde die Standard-IP bereits veraendert? 20 [
"$(uci_get "${uci_prefix}.ipaddr
")" !=
"$OPENWRT_DEFAULT_LOCAL_IP" ] &&
return 0
21 uci
set "${uci_prefix}.ipaddr=$(get_on_core_default lan_ipaddr)" 22 uci
set "${uci_prefix}.netmask=$(get_on_core_default lan_netmask)" 26 configure_opennet_zone() {
28 # Forwarding (die letzte Aktion dieses Ablaufs) existiert? Keine Aenderungen ... 29 [ -n
"$(find_first_uci_section "firewall
" "forwarding
" "src=$ZONE_MESH
" "dest=$ZONE_MESH
")" ] &&
return 0
30 uci_prefix=$(find_first_uci_section
"firewall" "zone" "name=$ZONE_MESH")
31 # Zone anlegen, falls leer
32 [ -z
"$uci_prefix" ] && uci_prefix=firewall.$(uci add firewall zone)
33 uci
set "$uci_prefix=zone" 34 uci
set "$uci_prefix.name=$ZONE_MESH" 35 # Opennet-APs bieten ueblicherweise keine privaten Dienste an 36 uci
set "$uci_prefix.input=ACCEPT" 37 # ausgehende Pakete sind OK 38 uci
set "$uci_prefix.output=ACCEPT" 39 # Verkehr aus dem opennet-Netz darf nicht in lokale oder tunnel-Netze 40 uci
set "$uci_prefix.forward=REJECT" 41 # via "masq_src" ersetzen wir die ehemalige "/etc/firewall.opennet" fuer Quell-basiertes Masquerading 42 add_zone_forward
"$ZONE_LOCAL" "$ZONE_MESH" 43 # intra-Zone-Verkehr muss explizit erlaubt werden 44 add_zone_forward
"$ZONE_MESH" "$ZONE_MESH" 48 configure_olsr_radio() {
49 trap
'error_trap configure_olsr_radio "$*"' EXIT
50 local iface_index=
"$1" 51 local iface_logical=
"$2" 54 local uci_wifi=
"wireless.@wifi-iface[$iface_index]" 58 uci_radio=
"wireless.$(uci_get "${uci_wifi}.device
")" 59 radio_hwmode=$(uci_get
"${uci_radio}.hwmode")
60 bssid=$(get_on_core_default wifi_bssid)
62 uci
set "${uci_wifi}.network=$iface_logical" 63 uci
set "${uci_wifi}.ifname=$iface_phys" 65 uci
set "wireless.radio${iface_index}.country=$(get_on_core_default wifi_country)" 66 uci_delete "wireless.radio${iface_index}.disabled" 68 # typ-spezifische Attribute 69 if echo
"$radio_hwmode" | grep -q
"a"; then
70 # 5 GHz: kein Mesh-Modus verfuegbar 71 uci
set "${uci_wifi}.ssid=$(get_on_core_default wifi_ssid_5ghz)" 72 uci
set "${uci_wifi}.mode=$(get_on_core_default wifi_mode_5ghz)" 73 uci
set "${uci_radio}.channel=$(get_on_core_default wifi_channel_5ghz)" 74 uci
set "${uci_wifi}.isolate=1" 76 # 2,4 GHz: Ad-hoc-Modus 77 uci
set "${uci_wifi}.ssid=$(get_on_core_default wifi_ssid)" 78 uci
set "${uci_wifi}.mode=$(get_on_core_default wifi_mode)" 79 [ -n
"$bssid" ] && uci
set "${uci_wifi}.bssid=$bssid" 80 uci
set "${uci_radio}.channel=$(get_on_core_default wifi_channel)" 86 configure_olsr_single_interface() {
87 trap
'error_trap configure_olsr_single_interface "$*"' EXIT
88 local iface_logical=
"$1" 90 local iface_netmask=
"$3" 94 uci
set "network.${iface_logical}=interface" 95 uci
set "network.${iface_logical}.proto=static" 96 uci
set "network.${iface_logical}.ifname=$iface_phys" 97 uci
set "network.${iface_logical}.netmask=$iface_netmask" 98 uci
set "network.${iface_logical}.defaultroute=0" 99 uci
set "network.${iface_logical}.peerdns=0" 100 uci
set "network.${iface_logical}.ipaddr=$iface_addr" 102 # disable dhcp on on_wifi 103 uci
set "dhcp.${iface_logical}=dhcp" 104 uci
set "dhcp.${iface_logical}.interface=${iface_logical}" 105 uci
set "dhcp.${iface_logical}.dynamicdhcp=0" 106 uci
set "dhcp.${iface_logical}.ignore=1" 110 configure_olsr_interfaces() {
111 trap
'error_trap configure_olsr_interfaces "$*"' EXIT
113 # diese Aktion ist bereits abgeschlossen 114 uci -q show
"network" | grep -q
'^network\.on_eth_0\.' &&
return 0
119 on_id=$(uci_get on-core.settings.on_id
"$(get_on_core_default on_id_preset)")
120 on_ipschema=$(get_on_core_default on_ipschema)
121 on_netmask=$(get_on_core_default on_netmask)
126 # Erstelle wifi config in uci, falls noch keine vorhanden ist
130 while [ -n
"$(uci_get "wireless.@wifi-iface[${iface_index}]
")" ];
do 131 on_ipaddr=$(get_on_ip
"$on_id" "$on_ipschema" "$iface_index")
132 iface_phys=wlan$iface_index
133 iface_logical=on_wifi_$iface_index
135 configure_olsr_single_interface
"$iface_logical" "$on_ipaddr" "$on_netmask" "$iface_phys" 136 configure_olsr_radio
"$iface_index" "$iface_logical" "$iface_phys" 140 iface_index=$((iface_index + 1))
143 for iface_logical in
"on_eth_0" "on_eth_1";
do 144 on_ipaddr=$(get_on_ip
"$on_id" "$on_ipschema" "$iface_index")
146 configure_olsr_single_interface
"$iface_logical" "$on_ipaddr" "$on_netmask" "$iface_phys" 148 iface_index=$((iface_index + 1))
153 # jede Funktion sollte selbst pruefen, ob ihre Aktion bereits abgeschlossen ist
154 configure_local_network
155 configure_opennet_zone
156 configure_olsr_interfaces
158 apply_changes network wireless dhcp firewall
uci_delete(uci_path)
Lösche ein UCI-Element.
add_interface_to_zone()
Fuege ein logisches Netzwerk-Interface zu einer Firewall-Zone hinzu.