(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {(DQ <'/sbin:/bin'>)} spids: [31] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUN_DIR) op: assign_op.Equal rhs: {(DQ <'/run/network'>)} spids: [36] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFSTATE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$RUN_DIR') <'/ifstate'>)} spids: [41] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STATEDIR) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$RUN_DIR') <'/state'>)} spids: [47] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-x>} {<'/sbin/ifup'>} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-x>} {<'/sbin/ifdown'>} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ) (C {<.>} {<'/lib/lsb/init-functions'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CONFIGURE_INTERFACES) op: assign_op.Equal rhs: {<yes>} spids: [88] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EXCLUDE_INTERFACES) op: assign_op.Equal rhs: (word.Empty) spids: [91] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERBOSE) op: assign_op.Equal rhs: {<no>} spids: [93] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/default/networking'>} {<Id.Lit_RBracket ']'>}) (C {<.>} {<'/etc/default/networking'>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:verbose) op: assign_op.Equal rhs: {(DQ )} spids: [112] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$VERBOSE'))} {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:verbose) op: assign_op.Equal rhs: {<-v>} spids: [130] ) ] ) ] ) (command.ShFunction name: process_exclusions body: (BraceGroup children: [ (C {<set>} {<-->} {($ Id.VSub_DollarName '$EXCLUDE_INTERFACES')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:exclusions) op: assign_op.Equal rhs: {(DQ )} spids: [148] ) ] ) (command.ForEach iter_name: d do_arg_iter: T body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:exclusions) op: assign_op.Equal rhs: { (DQ <'-X '> ($ Id.VSub_DollarName '$d') <' '> ($ Id.VSub_DollarName '$exclusions') ) } spids: [161] ) ] ) ] ) ) (C {<echo>} {($ Id.VSub_DollarName '$exclusions')}) ] ) ) (command.ShFunction name: process_options body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-e>} {<'/etc/network/options'>} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<log_warning_msg>} { (DQ < '/etc/network/options still exists and it will be IGNORED! Please use /etc/sysctl.conf instead.' > ) } ) ] ) ) (command.ShFunction name: check_ifstate body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName '$RUN_DIR'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$RUN_DIR'))}) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'can\'t create '> ($ Id.VSub_DollarName '$RUN_DIR'))} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [237 251] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<chown>} {<root> <Id.Lit_Colon ':'> <netdev>} {(DQ ($ Id.VSub_DollarName '$RUN_DIR'))} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_warning_msg>} {(DQ <'can\'t chown '> ($ Id.VSub_DollarName '$RUN_DIR'))} ) ] spids: [270 286] ) ] ) ] spids: [218 234] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {(DQ ($ Id.VSub_DollarName '$IFSTATE'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<Id.Lit_Colon ':'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$IFSTATE'))} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_failure_msg>} {(DQ <'can\'t initialise '> ($ Id.VSub_DollarName '$IFSTATE'))} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [322 335] ) ] ) ] spids: [303 319] ) ] ) ] ) ) (command.ShFunction name: check_network_file_systems body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-e>} {<'/proc/mounts'>} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {<'/etc/iscsi/iscsi.initramfs'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<log_warning_msg>} {(DQ <'not deconfiguring network interfaces: iSCSI root is mounted.'>)} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [382 393] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<DEV>} {<MTPT>} {<FSTYPE>} {<REST>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$DEV')} arms: [ (case_arm pat_list: [ {<'/dev/nbd'> <Id.Lit_Star '*'>} {<'/dev/nd'> <Id.Lit_LBracket '['> <a-z> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<'/dev/etherd/e'> <Id.Lit_Star '*'>} {<curlftpfs> <Id.Lit_Star '*'>} ] action: [ (C {<log_warning_msg>} { (DQ < 'not deconfiguring network interfaces: network devices still mounted.' > ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [435 449 464 -1] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$FSTYPE')} arms: [ (case_arm pat_list: [ {<nfs>} {<nfs4>} {<smbfs>} {<ncp>} {<ncpfs>} {<cifs>} {<coda>} {<ocfs2>} {<gfs>} {<pvfs>} {<pvfs2>} {<fuse.httpfs>} {<fuse.curlftpfs>} ] action: [ (C {<log_warning_msg>} { (DQ < 'not deconfiguring network interfaces: network file systems still mounted.' > ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [477 502 517 -1] ) ] ) ] ) redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<'/proc/mounts'>})] ) ] ) ) (command.ShFunction name: check_network_swap body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-e>} {<'/proc/swaps'>} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<DEV>} {<MTPT>} {<FSTYPE>} {<REST>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$DEV')} arms: [ (case_arm pat_list: [ {<'/dev/nbd'> <Id.Lit_Star '*'>} {<'/dev/nd'> <Id.Lit_LBracket '['> <a-z> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<'/dev/etherd/e'> <Id.Lit_Star '*'>} ] action: [ (C {<log_warning_msg>} { (DQ < 'not deconfiguring network interfaces: network swap still mounted.' > ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [578 589 604 -1] ) ] ) ] ) redirects: [(redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<'/proc/swaps'>})] ) ] ) ) (command.ShFunction name: ifup_hotplug body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-d>} {<'/sys/class/net'>} {<Id.Lit_RBracket ']'>}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ifaces) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.ForEach iter_name: iface iter_words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<ifquery>} {<--list>} {<--allow> <Id.Lit_Equals '='> <hotplug>} ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:link) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name iface> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<':'> <Id.Lit_Other '*'>} ) ) } spids: [663] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:link) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name link> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<.> <Id.Lit_Other '*'>} ) ) } spids: [672] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-e>} { (DQ <'/sys/class/net/'> ($ Id.VSub_DollarName '$link') ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<ip>} {<link>} {<set>} {(DQ ($ Id.VSub_DollarName '$iface'))} {<up>} ) (C {<true>}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/class/net/'> ($ Id.VSub_DollarName '$link' ) <'/operstate'> } ) ) ) } {<Id.Lit_Equals '='>} {<up>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$iface'))} ) ] spids: [719 740] ) ] ) ] spids: [681 695] ) ] ) ] ) ) ) } spids: [641] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$ifaces'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<ifup>} {($ Id.VSub_DollarName '$ifaces')} {(DQ ($ Id.VSub_At '$@'))}) (C {<true>}) ] ) ] spids: [760 773] ) ] ) ] spids: [627 638] ) ] ) ] ) ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{<start>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<init_is_upstart>}) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [809 814] ) ] ) (C {<process_options>}) (C {<check_ifstate>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CONFIGURE_INTERFACES'))} {<Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<log_action_msg>} {(DQ <'Not configuring network interfaces, see /etc/default/networking'>)} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [832 847] ) ] ) (C {<set>} {<-f>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:exclusions) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<process_exclusions>}) ) } spids: [870] ) ] ) (C {<log_action_begin_msg>} {(DQ <'Configuring network interfaces'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-x>} {<'/sbin/udevadm'>} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<ifquery>} {<--list>} {<--exclude> <Id.Lit_Equals '='> <lo>} ) ) ) } {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<ifquery>} {<--list>} {<--allow> <Id.Lit_Equals '='> <hotplug>} ) ) ) } {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [(C {<udevadm>} {<settle>}) (C {<true>})] ) ] spids: [897 938] ) ] ) ] spids: [883 894] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<ifup>} {<-a>} {($ Id.VSub_DollarName '$exclusions')} {($ Id.VSub_DollarName '$verbose')} ) (C {<ifup_hotplug>} {($ Id.VSub_DollarName '$exclusions')} {($ Id.VSub_DollarName '$verbose')} ) ] ) ] ) action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] spids: [956 975] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [805 806 994 -1] ) (case_arm pat_list: [{<stop>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<init_is_upstart>}) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})] spids: [1001 1006] ) ] ) (C {<check_network_file_systems>}) (C {<check_network_swap>}) (C {<log_action_begin_msg>} {(DQ <'Deconfiguring network interfaces'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<ifdown>} {<-a>} {<--exclude> <Id.Lit_Equals '='> <lo>} {($ Id.VSub_DollarName '$verbose')} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] spids: [1031 1044] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [997 998 1063 -1] ) (case_arm pat_list: [{<reload>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<init_is_upstart>}) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [1070 1075] ) ] ) (C {<process_options>}) (C {<log_action_begin_msg>} {(DQ <'Reloading network interfaces configuration'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:state) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<ifquery>} {<--state>}) ) } spids: [1097] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<ifdown>} {<-a>} {<--exclude> <Id.Lit_Equals '='> <lo>} {($ Id.VSub_DollarName '$verbose')} ) (C {<true>}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<ifup>} {<--exclude> <Id.Lit_Equals '='> <lo>} {($ Id.VSub_DollarName '$state')} {($ Id.VSub_DollarName '$verbose')} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] spids: [1120 1134] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [1066 1067 1153 -1] ) (case_arm pat_list: [{<force-reload>} {<restart>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<init_is_upstart>}) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [1162 1167] ) ] ) (C {<process_options>}) (C {<log_warning_msg>} { (DQ <'Running '> ($ Id.VSub_Number '$0') <' '> ($ Id.VSub_Number '$1') <' is deprecated because it may not re-enable some interfaces'> ) } ) (C {<log_action_begin_msg>} {(DQ <'Reconfiguring network interfaces'>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<ifdown>} {<-a>} {<--exclude> <Id.Lit_Equals '='> <lo>} {($ Id.VSub_DollarName '$verbose')} ) (C {<true>}) ] ) (C {<set>} {<-f>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:exclusions) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<process_exclusions>}) ) } spids: [1220] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<ifup>} {<-a>} {<--exclude> <Id.Lit_Equals '='> <lo>} {($ Id.VSub_DollarName '$exclusions')} {($ Id.VSub_DollarName '$verbose')} ) (C {<ifup_hotplug>} {($ Id.VSub_DollarName '$exclusions')} {($ Id.VSub_DollarName '$verbose')} ) ] ) ] ) action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] spids: [1226 1249] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [1156 1159 1268 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<echo>} {(DQ <'Usage: /etc/init.d/networking {start|stop|reload|restart|force-reload}'>)} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [1271 1272 1287 -1] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )