(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: (command.BraceGroup children: [ (C {<Id.KW_Set 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: (command.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: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (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: [ (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: [ (command.Sentence child: (command.Pipeline children: [ (C {<chown>} {<root> <Id.Lit_Other ':'> <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: [ (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: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<Id.Lit_Other ':'>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$IFSTATE'))} ) ] ) ] 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: (command.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: [ (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: [ (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.Redir op:<Id.Redir_Less '<'> fd:-1 arg_word:{</proc/mounts>})] ) ] ) ) (command.ShFunction name: check_network_swap body: (command.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: [ (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.Redir op:<Id.Redir_Less '<'> fd:-1 arg_word:{</proc/swaps>})] ) ] ) ) (command.ShFunction name: ifup_hotplug body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [(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 '$('> command_list: (command.CommandList children: [ (command.ForEach iter_name: iface iter_words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (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 op_id: Id.VOp1_DPound arg_word: {<':*'>} ) ) } 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 op_id: Id.VOp1_DPound arg_word: {<'.*'>} ) ) } spids: [671] ) ] ) (command.If arms: [ (if_arm cond: [ (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>} {<Id.KW_Set set>} {(DQ ($ Id.VSub_DollarName '$iface'))} {<up>} ) (C {<true>}) ] ) (command.If arms: [ (if_arm cond: [ (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (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: [717 738] ) ] ) ] spids: [679 693] ) ] ) ] ) ) ] ) ) } spids: [641] ) ] ) (command.If arms: [ (if_arm cond: [ (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: [758 771] ) ] ) ] 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: [(command.Sentence child:(C {<init_is_upstart>}) terminator:<Id.Op_Semi _>)] action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [807 812] ) ] ) (C {<process_options>}) (C {<check_ifstate>}) (command.If arms: [ (if_arm cond: [ (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: [830 845] ) ] ) (C {<Id.KW_Set 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 '$('> command_list: (command.CommandList children:[(C {<process_exclusions>})]) ) } spids: [868] ) ] ) (C {<log_action_begin_msg>} {(DQ <'Configuring network interfaces'>)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-x>} {</sbin/udevadm>} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {<ifquery>} {<--list>} {<--exclude> <Id.Lit_Equals '='> <lo>} ) ] ) ) ) } {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children: [ (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: [895 936] ) ] ) ] spids: [881 892] ) ] ) (command.If arms: [ (if_arm cond: [ (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: [954 973] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [803 804 992 -1] ) (case_arm pat_list: [{<stop>}] action: [ (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<init_is_upstart>}) terminator:<Id.Op_Semi _>)] action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})] spids: [999 1004] ) ] ) (C {<check_network_file_systems>}) (C {<check_network_swap>}) (C {<log_action_begin_msg>} {(DQ <'Deconfiguring network interfaces'>)}) (command.If arms: [ (if_arm cond: [ (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: [1029 1042] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [995 996 1061 -1] ) (case_arm pat_list: [{<reload>}] action: [ (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<init_is_upstart>}) terminator:<Id.Op_Semi _>)] action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [1068 1073] ) ] ) (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 '$('> command_list: (command.CommandList children:[(C {<ifquery>} {<--state>})]) ) } spids: [1095] ) ] ) (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: [ (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: [1118 1132] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [1064 1065 1151 -1] ) (case_arm pat_list: [{<force-reload>} {<restart>}] action: [ (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<init_is_upstart>}) terminator:<Id.Op_Semi _>)] action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [1160 1165] ) ] ) (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 {<Id.KW_Set 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 '$('> command_list: (command.CommandList children:[(C {<process_exclusions>})]) ) } spids: [1218] ) ] ) (command.If arms: [ (if_arm cond: [ (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: [1224 1247] ) ] else_action: [(C {<log_action_end_msg>} {($ Id.VSub_QMark '$?')})] ) ] spids: [1154 1157 1266 -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: [1269 1270 1285 -1] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )