English Language flag
// Log In
// CVSweb
Project: FreeWRT
// Summary // Activity // Search // Tracker // Lists // News // SCM // Wiki

SCM Repository

ViewVC logotype

Diff of /branches/common-nfo/package/fwifupdown/lib/alias

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3426 by tg, Wed Jul 18 12:45:43 2007 UTC revision 3427 by tg, Wed Aug 8 11:08:41 2007 UTC
# Line 7  Line 7 
7  # Christian Fischer <spaetzle@freewrt.org>  # Christian Fischer <spaetzle@freewrt.org>
8  #  #
9    
10  RT_PREUP_IFUP_CHECK_OFF=1  IFACE_LOGICAL=1
 RT_UP_IFUP_CHECK_OFF=1  
 RT_UP_PRINTING_OFF=1  
11    
12  iface_type() {  iface_type() {
13          [ "$(echo $IFACE | sed 's/[^:]*//g')" = ":" ]          [[ $(echo $IFACE | sed 's/[^:]*//g') = : ]]
14  }  }
15    
16  alias_exists() {  alias_exists() {
17          [ "$(ip a 2>&- | grep $IFACE | sed "s/.*[^${IFACE}]//")" = "$IFACE" ]          [[ $(ip a 2>&- | grep $IFACE | sed "s/.*[^${IFACE}]//") = $IFACE ]]
18  }  }
19    
20  get_primary() {  alias_get_primary() {
21          echo $IFACE | sed 's/:.*$//'          echo $IFACE | sed 's/:.*$//'
22  }  }
23    
24  if_preup() {  alias_is_up() {
25          if [ x"$METHOD" != x"static" ]          alias_exists && is_up $(alias_get_primary)
26          then  }
                 mup  
                 mstate 1  
                 merr "Methods other than static makes no sense for alias ifaces"  
                 # bypass execution of further busybox ifupdown.c code  
                 built_in exit 1  
         fi  
27    
28          if alias_exists  prereq_preup() {
29          then          if [[ $METHOD != static ]]; then
30                    mup
31                  mstate 1                  mstate 1
32                  merr "Alias already up"                  merr "Unsupported method $METHOD"
33                  return 1                  return 1
34          fi          fi
         is_up $(get_primary) || ifup $(get_primary)  
         return $?  
 }  
35    
36  if_up() {          alias_is_up || return 0
37          alias_exists && is_up $(get_primary)          mup
38          mstate $?          mstate 1
39            minfo "Interface already up"
40            return 1
41  }  }
42    
43  if_down() {  if_preup() {
44          if ! alias_exists          local baseif=$(alias_get_primary)
45          then          is_up $baseif || ifup $baseif
46                  mdown  }
                 mstate 1  
                 merr "Alias already down"  
                 return 1  
         fi  
47    
48          ### busybox ifdown workaround ###  prereq_up() {
49          # running busybox ifdown <alias interface name> causes primary interface shutdown          alias_is_up
50            mstate $? || return
51    }
52    
53    prereq_down() {
54            alias_exists && return
55          mdown          mdown
56          ip link set down $IFACE >/dev/null 2>&1          mstate 1
57          mstate $?          merr "No such device"
58            return 1
59    }
60    
61          # break here because all things are done and bypass execution of further busybox ifupdown.c code  if_down() {
62          built_in exit 1          alias_is_up || alias_ifstate=down
63            # running busybox ifdown <alias interface name> causes primary
64            # interface shutdown
65            # overwrite main method to override busybox ifupdown.c code
66            main_bb_methods_override() {
67                    eval $IF_DOWN
68                    ip link set down $IFACE 1>&- || { mstate 1; exit;}
69                    eval $IF_POST_DOWN
70                    main_postdown
71                    RT_BB_NOEXEC=1
72            }
73    }
74    
75    prereq_postdown() {
76            alias_exists
77            mstate $((!$?)) || exit
78            [[ $alias_ifstate = down ]] && minfo "Interface already down"
79            return 0
80  }  }
81    
82  # vim:ts=4  # vim:ts=4

Legend:
Removed from v.3426  
changed lines
  Added in v.3427

root@freewrt.org:443
ViewVC Help
Powered by ViewVC 1.1.20