Changeset 9431


Ignore:
Timestamp:
2007-10-24T19:25:48+02:00 (10 years ago)
Author:
nbd
Message:

fix olsrd cflags handling, add new init script and config by Alina Friedrichsen

Location:
packages/net/olsrd
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • packages/net/olsrd/Makefile

    r9349 r9431  
    103103                $(TARGET_CONFIGURE_OPTS) \ 
    104104                NODEBUG=1 \ 
    105                 OFLAGS="$(TARGET_CFLAGS)" \ 
     105                CFLAGS="$(TARGET_CFLAGS)" \ 
    106106                OS="linux" \ 
    107107                INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \ 
     
    115115 
    116116define Package/olsrd/install 
    117         $(INSTALL_DIR) $(1)/etc 
    118         $(CP) $(PKG_INSTALL_DIR)/etc/olsrd.conf $(1)/etc/ 
     117        $(INSTALL_DIR) $(1)/etc/config 
     118        $(INSTALL_DATA) ./files/olsr.config $(1)/etc/config/olsr 
     119        $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/olsrd.conf $(1)/etc/ 
    119120        $(INSTALL_DIR) $(1)/usr/sbin 
    120         $(CP) $(PKG_INSTALL_DIR)/usr/sbin/olsrd $(1)/usr/sbin/ 
     121        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/olsrd $(1)/usr/sbin/ 
    121122        $(INSTALL_DIR) $(1)/etc/init.d 
    122123        $(INSTALL_BIN) ./files/olsrd.init $(1)/etc/init.d/olsrd 
  • packages/net/olsrd/files/olsrd.init

    r7164 r9431  
    11#!/bin/sh /etc/rc.common 
    2 # Copyright (C) 2006 OpenWrt.org 
    32START=50 
    43 
    54BIN=olsrd 
     5CONF_F=/var/etc/olsrd.conf 
     6USE_CONF_F= 
    67DEFAULT=/etc/default/olsrd 
    78RUN_D=/var/run 
    89PID_F=$RUN_D/$BIN.pid 
    910 
     11format_olsr_option() { 
     12        local str="$*" 
     13        echo -n "$str" | tr -d '\n\r\t\v ' 
     14} 
     15 
     16format_olsr_value() { 
     17        local str="$*" 
     18        echo -n "$str" | tr -d '\n\r\v' 
     19} 
     20 
     21format_olsr_param() { 
     22        local str="$*" 
     23        echo -n "$str" | tr -d '\n\r\v"' 
     24} 
     25 
     26format_uci_varname() { 
     27        local str="$*" 
     28        echo -n "$str" | sed -e 's/[^a-zA-Z0-9_]//g' 
     29} 
     30 
     31foreach_olsr() { 
     32        local cfg="$1" 
     33        local option 
     34        local value 
     35 
     36        for option in $CONFIG_OPTIONS 
     37        do 
     38                config_get value "$cfg" "$option" 
     39                option=$(format_olsr_option "$option") 
     40                value=$(format_olsr_value "$value") 
     41 
     42                if [ -n "$value" -a "$option" != "ConfigFile" ]; then 
     43                        echo "$option $value" >> "$CONF_F" 
     44                fi 
     45        done 
     46        echo >> "$CONF_F" 
     47} 
     48 
     49foreach_Hna4() { 
     50        local cfg="$1" 
     51        local netaddr 
     52        local netmask 
     53 
     54        config_get netaddr "$cfg" NetAddr 
     55        config_get netmask "$cfg" NetMask 
     56        netaddr=$(format_olsr_option "$netaddr") 
     57        netmask=$(format_olsr_option "$netmask") 
     58 
     59        if [ -n "$netaddr" -a -n "$netmask" ]; then 
     60                if [ "$HNA4_COUNT" -le 0 ]; then 
     61                        echo "Hna4" >> "$CONF_F" 
     62                        echo "{" >> "$CONF_F" 
     63                fi 
     64 
     65                echo "  $netaddr $netmask" >> "$CONF_F" 
     66                HNA4_COUNT=$((HNA4_COUNT + 1)) 
     67        fi 
     68} 
     69 
     70write_Hna4() { 
     71        if [ "$HNA4_COUNT" -gt 0 ]; then 
     72                echo "}" >> "$CONF_F" 
     73                echo >> "$CONF_F" 
     74        fi 
     75} 
     76 
     77foreach_Hna6() { 
     78        local cfg="$1" 
     79        local netaddr 
     80        local netmask 
     81 
     82        config_get netaddr "$cfg" NetAddr 
     83        config_get prefix "$cfg" Prefix 
     84        netaddr=$(format_olsr_option "$netaddr") 
     85        prefix=$(format_olsr_option "$prefix") 
     86 
     87        if [ -n "$netaddr" -a -n "$prefix" ]; then 
     88                if [ "$HNA6_COUNT" -le 0 ]; then 
     89                        echo "Hna6" >> "$CONF_F" 
     90                        echo "{" >> "$CONF_F" 
     91                fi 
     92 
     93                echo "  $netaddr $prefix" >> "$CONF_F" 
     94                HNA6_COUNT=$((HNA6_COUNT + 1)) 
     95        fi 
     96} 
     97 
     98write_Hna6() { 
     99        if [ "$HNA6_COUNT" -gt 0 ]; then 
     100                echo "}" >> "$CONF_F" 
     101                echo >> "$CONF_F" 
     102        fi 
     103} 
     104 
     105foreach_IpcConnect() { 
     106        local cfg="$1" 
     107        local option 
     108        local value 
     109        local c 
     110 
     111        echo "IpcConnect" >> "$CONF_F" 
     112        echo -n "{" >> "$CONF_F" 
     113 
     114        for option in $CONFIG_OPTIONS 
     115        do 
     116                config_get value "$cfg" "$option" 
     117                option=$(format_olsr_option "$option") 
     118                value=$(format_olsr_value "$value") 
     119 
     120                if [ -n "$value" ]; then 
     121                        if [ "$option" = "Host" ]; then 
     122                                for item in $value 
     123                                do 
     124                                        echo >> "$CONF_F" 
     125                                        echo -n "       $option $item" >> "$CONF_F" 
     126                                done 
     127                        elif [ "$option" = "Net" ]; then 
     128                                c=0 
     129                                for item in $value 
     130                                do 
     131                                        if [ $((c % 2)) -eq 0 ]; then 
     132                                                echo >> "$CONF_F" 
     133                                                echo -n "       $option $item" >> "$CONF_F" 
     134                                        else 
     135                                                echo -n " $item" >> "$CONF_F" 
     136                                        fi 
     137                                        c=$((c + 1)) 
     138                                done 
     139                        else 
     140                                echo >> "$CONF_F" 
     141                                echo -n "       $option $value" >> "$CONF_F" 
     142                        fi 
     143                fi 
     144        done 
     145 
     146        echo >> "$CONF_F" 
     147        echo "}" >> "$CONF_F" 
     148        echo >> "$CONF_F" 
     149} 
     150 
     151foreach_LoadPlugin() { 
     152        local cfg="$1" 
     153        local library 
     154        local option 
     155        local value 
     156        local is_ip_addr 
     157        local item 
     158        local c 
     159 
     160        config_get library "$cfg" Library 
     161        library=$(format_olsr_param "$library") 
     162 
     163        if [ -n "$library" ]; then 
     164                echo "LoadPlugin \"$library\"" >> "$CONF_F" 
     165                echo -n "{" >> "$CONF_F" 
     166 
     167                for option in $CONFIG_OPTIONS 
     168                do 
     169                        config_get value "$cfg" "$option" 
     170                        option=$(format_olsr_param "$option") 
     171                        value=$(format_olsr_param "$value") 
     172 
     173                        if [ -n "$value" ]; then 
     174                                option=$(echo "$option" | sed -e y/[_]/[-]/) 
     175 
     176                                is_ip_addr=$(echo "$option" | sed -e 's/[^-]//g') 
     177                                if [ "$is_ip_addr" = "---" ]; then 
     178                                        option=$(echo "$option" | sed -e y/[-]/[.]/) 
     179                                fi 
     180 
     181                                if [ "$option" = "Ping" -o "$option" = "redistribute" -o "$option" = "Host" -o "$option" = "NonOlsrIf" -o "$option" = "name" -o "$is_ip_addr" = "---" ]; then 
     182                                        for item in $value 
     183                                        do 
     184                                                echo >> "$CONF_F" 
     185                                                echo -n "       PlParam \"$option\" \"$item\"" >> "$CONF_F" 
     186                                        done 
     187                                elif [ "$option" = "Net" -o "$option" = "HNA" ]; then 
     188                                        c=0 
     189                                        for item in $value 
     190                                        do 
     191                                                if [ $((c % 2)) -eq 0 ]; then 
     192                                                        echo >> "$CONF_F" 
     193                                                        echo -n "       PlParam \"$option\" \"$item" >> "$CONF_F" 
     194                                                else 
     195                                                        echo -n " $item\"" >> "$CONF_F" 
     196                                                fi 
     197                                                c=$((c + 1)) 
     198                                        done 
     199                                elif [ "$option" != "Library" ]; then 
     200                                        echo >> "$CONF_F" 
     201                                        echo -n "       PlParam \"$option\" \"$value\"" >> "$CONF_F" 
     202                                fi 
     203                        fi 
     204                done 
     205 
     206                echo >> "$CONF_F" 
     207                echo "}" >> "$CONF_F" 
     208                echo >> "$CONF_F" 
     209        fi 
     210} 
     211 
     212foreach_Interface() { 
     213        local cfg="$1" 
     214        local interfaces 
     215        local interface 
     216        local ifname 
     217        local option 
     218        local value 
     219        local item 
     220        local c 
     221 
     222        config_get interfaces "$cfg" Interface 
     223 
     224        if [ -n "$interfaces" ]; then 
     225                echo -n "Interface" >> "$CONF_F" 
     226 
     227                for interface in $interfaces 
     228                do 
     229                        interface=$(format_uci_varname "$interface") 
     230                        config_get ifnames "$interface" ifname 
     231                        for ifname in $ifnames 
     232                        do 
     233                                ifname=$(format_olsr_param "$ifname") 
     234                                echo -n " \"$ifname\"" >> "$CONF_F" 
     235                        done 
     236                done 
     237 
     238                echo >> "$CONF_F" 
     239                echo -n "{" >> "$CONF_F" 
     240 
     241                for option in $CONFIG_OPTIONS 
     242                do 
     243                        config_get value "$cfg" "$option" 
     244                        option=$(format_olsr_option "$option") 
     245                        value=$(format_olsr_value "$value") 
     246 
     247                        if [ -n "$value" ]; then 
     248                                if [ "$option" = "LinkQualityMult" ]; then 
     249                                        c=0 
     250                                        for item in $value 
     251                                        do 
     252                                                if [ $((c % 2)) -eq 0 ]; then 
     253                                                        echo >> "$CONF_F" 
     254                                                        echo -n "       $option $item" >> "$CONF_F" 
     255                                                else 
     256                                                        echo -n " $item" >> "$CONF_F" 
     257                                                fi 
     258                                                c=$((c + 1)) 
     259                                        done 
     260                                elif [ "$option" != "Interface" ]; then 
     261                                        echo >> "$CONF_F" 
     262                                        echo -n "       $option $value" >> "$CONF_F" 
     263                                fi 
     264                        fi 
     265                done 
     266 
     267                echo >> "$CONF_F" 
     268                echo "}" >> "$CONF_F" 
     269        fi 
     270} 
     271 
     272write_config() { 
     273        include /lib/network 
     274        scan_interfaces 
     275        config_load /var/state/network 
     276 
     277        config_cb() { 
     278                local cfgtype="$1" 
     279                local name="$2" 
     280                CONFIG_TYPE="$cfgtype" 
     281        } 
     282 
     283        option_cb() { 
     284                local varname="$1" 
     285                local value="$2" 
     286 
     287                if [ "$CONFIG_TYPE" = "OLSR" -a "$varname" = "ConfigFile" ]; then 
     288                        USE_CONF_F="$value" 
     289                fi 
     290 
     291                if ! echo "$CONFIG_OPTIONS" | grep " $varname " > /dev/null; then 
     292                        CONFIG_OPTIONS="$CONFIG_OPTIONS $varname " 
     293                fi 
     294        } 
     295 
     296        CONFIG_OPTIONS="" 
     297        config_load olsr 
     298 
     299        if [ -n "$USE_CONF_F" ]; then 
     300                return 0 
     301        else 
     302                USE_CONF_F="$CONF_F" 
     303        fi 
     304 
     305        mkdir -p $(dirname "$CONF_F") 
     306        > "$CONF_F" 
     307        config_foreach foreach_olsr olsr 
     308        HNA4_COUNT=0 
     309        config_foreach foreach_Hna4 Hna4 
     310        write_Hna4 
     311        HNA6_COUNT=0 
     312        config_foreach foreach_Hna6 Hna6 
     313        write_Hna6 
     314        config_foreach foreach_IpcConnect IpcConnect 
     315        config_foreach foreach_LoadPlugin LoadPlugin 
     316        config_foreach foreach_Interface Interface 
     317} 
     318 
    10319start() { 
     320        [ -z "$USE_CONF_F" ] && write_config 
     321 
    11322        [ -f $DEFAULT ] && . $DEFAULT 
    12         $BIN -nofork $OPTIONS & 
    13          
     323        $BIN -f "$USE_CONF_F" -nofork $OPTIONS & 
     324 
    14325        # write pid file (but strip out own pid ($$)) 
    15326        mkdir -p $RUN_D 
    16327        PID=`pidof $BIN` 
    17328        echo ${PID%$$} > $PID_F 
    18  
    19  
    20329} 
    21330 
Note: See TracChangeset for help on using the changeset viewer.