(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: (Token id:Id.ControlFlow_Exit val:exit span_id:64) arg_word: {(0)} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-x)} {(/sbin/ifdown)} {(Id.Lit_RBracket ']')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:78) 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: (Token id:Id.ControlFlow_Return val:return span_id:197) 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: (Token id:Id.Op_Semi val:';' span_id:232) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:249) ) ] action: [ (C {(log_failure_msg)} {(DQ ("can't create ") ($ Id.VSub_DollarName '$RUN_DIR'))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:262) 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: (Token id:Id.Op_Semi val:';' span_id:284) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:317) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{(Id.Lit_Other ':')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:327) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$IFSTATE'))} ) ] ) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:333) ) ] action: [ (C {(log_failure_msg)} {(DQ ("can't initialise ") ($ Id.VSub_DollarName '$IFSTATE'))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:346) 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: (Token id:Id.ControlFlow_Return val:return span_id:376) 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: (Token id:Id.Op_Semi val:';' span_id:391) ) ] action: [ (C {(log_warning_msg)} {(DQ ('not deconfiguring network interfaces: iSCSI root is mounted.'))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:403) arg_word: {(0)} ) ] spids: [382 393] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:412) cond: [ (command.Sentence child: (C {(read)} {(DEV)} {(MTPT)} {(FSTYPE)} {(REST)}) terminator: (Token id:Id.Op_Semi val:';' span_id:423) ) ] 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: (Token id:Id.ControlFlow_Exit val:exit span_id:459) 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: (Token id:Id.ControlFlow_Exit val:exit span_id:512) arg_word: {(0)} ) ] spids: [477 502 517 -1] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:525) 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: (Token id:Id.ControlFlow_Return val:return span_id:549) arg_word: {(0)} ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:555) cond: [ (command.Sentence child: (C {(read)} {(DEV)} {(MTPT)} {(FSTYPE)} {(REST)}) terminator: (Token id:Id.Op_Semi val:';' span_id:566) ) ] 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: (Token id:Id.ControlFlow_Exit val:exit span_id:599) arg_word: {(0)} ) ] spids: [578 589 604 -1] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:612) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:642) command_list: (command.CommandList children: [ (command.ForEach iter_name: iface iter_words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 649 ) 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: (Token id: Id.VSub_Name val: iface span_id: 665 ) 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: (Token id: Id.VSub_Name val: link span_id: 673 ) 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: (Token id: Id.Left_DollarParen val: '$(' span_id: 722 ) 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: (Token id:Id.Op_Semi val:';' span_id:810) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:815) 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: (Token id:Id.ControlFlow_Exit val:exit span_id:855) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:869) 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: (Token id:Id.Op_Semi val:';' span_id:890) ) ] 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: (Token id: Id.Left_DollarParen val: '$(' span_id: 902 ) 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: (Token id: Id.Left_DollarParen val: '$(' span_id: 922 ) command_list: (command.CommandList children: [ (C {(ifquery)} {(--list)} {(--allow) (Id.Lit_Equals '=') (hotplug)} ) ] ) ) ) } {(Id.Lit_RBracket ']')} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:934) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:1002) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1007) 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: (Token id:Id.Op_Semi val:';' span_id:1040) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:1071) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1076) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:1096) 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: (Token id:Id.Op_Semi val:';' span_id:1130) ) ] 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: (Token id:Id.Op_Semi val:';' span_id:1163) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1168) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:1219) 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: (Token id:Id.ControlFlow_Exit val:exit span_id:1280) arg_word: {(1)} ) ] spids: [1269 1270 1285 -1] ) ] ) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:1290) arg_word:{(0)}) ] )