(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFNAME) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CMD) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [7] ) ] ) (command.ShFunction name: kill_daemon body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NAME) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [18] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PF) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [22] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {($ Id.VSub_DollarName '$PF')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [27 40] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PID) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {($ Id.VSub_DollarName '$PF')}) ) } spids: [50] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$PID')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<ps>} {($ Id.VSub_DollarName '$PID')}) (C {<grep>} {<-q>} {($ Id.VSub_DollarName '$NAME')}) ] negated: F ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<kill>} {($ Id.VSub_DollarName '$PID')})] spids: [76 91] ) ] ) ] spids: [60 73] ) ] ) (C {<rm>} {($ Id.VSub_DollarName '$PF')}) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CMD'))} {<Id.Lit_Equals '='>} {(DQ <P2P-GROUP-STARTED>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIFNAME) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [132] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$4'))} {<Id.Lit_Equals '='>} {(DQ <GO>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill_daemon>} {<udhcpc>} {<'/var/run/udhcpc-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<ifconfig>} {($ Id.VSub_DollarName '$GIFNAME')} {<192.168.42.1>} {<up>}) (C {<udhcpd>} {<'/etc/udhcpd-p2p.conf'>}) ] spids: [136 153] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$4'))} {<Id.Lit_Equals '='>} {(DQ <client>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill_daemon>} {<udhcpc>} {<'/var/run/udhcpc-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<kill_daemon>} {<udhcpd>} {<'/var/run/udhcpd-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<udhcpc>} {<-i>} {($ Id.VSub_DollarName '$GIFNAME')} {<-p>} {<'/var/run/udhcpc-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} {<-s>} {<'/etc/udhcpc.script'>} ) ] spids: [182 199] ) ] ) ] spids: [112 129] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CMD'))} {<Id.Lit_Equals '='>} {(DQ <P2P-GROUP-REMOVED>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIFNAME) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [264] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$4'))} {<Id.Lit_Equals '='>} {(DQ <GO>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill_daemon>} {<udhcpd>} {<'/var/run/udhcpd-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<ifconfig>} {($ Id.VSub_DollarName '$GIFNAME')} {<0.0.0.0>}) ] spids: [268 285] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$4'))} {<Id.Lit_Equals '='>} {(DQ <client>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<kill_daemon>} {<udhcpc>} {<'/var/run/udhcpc-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<ifconfig>} {($ Id.VSub_DollarName '$GIFNAME')} {<0.0.0.0>}) ] spids: [307 324] ) ] ) ] spids: [244 261] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CMD'))} {<Id.Lit_Equals '='>} {(DQ <P2P-CROSS-CONNECT-ENABLE>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIFNAME) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [368] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPLINK) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [372] ) ] ) (C {<iptables>} {<-P>} {<FORWARD>} {<DROP>}) (C {<iptables>} {<-t>} {<nat>} {<-A>} {<POSTROUTING>} {<-o>} {($ Id.VSub_DollarName '$UPLINK')} {<-j>} {<MASQUERADE>} ) (C {<iptables>} {<-A>} {<FORWARD>} {<-i>} {($ Id.VSub_DollarName '$UPLINK')} {<-o>} {($ Id.VSub_DollarName '$GIFNAME')} {<-m>} {<state>} {<--state>} {<RELATED> <Id.Lit_Comma ','> <ESTABLISHED>} {<-j>} {<ACCEPT>} ) (C {<iptables>} {<-A>} {<FORWARD>} {<-i>} {($ Id.VSub_DollarName '$GIFNAME')} {<-o>} {($ Id.VSub_DollarName '$UPLINK')} {<-j>} {<ACCEPT>} ) (C {<sysctl>} {<net.ipv4.ip_forward> <Id.Lit_Equals '='> <1>}) ] spids: [348 365] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$CMD'))} {<Id.Lit_Equals '='>} {(DQ <P2P-CROSS-CONNECT-DISABLE>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIFNAME) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [485] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPLINK) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [489] ) ] ) (C {<sysctl>} {<net.ipv4.ip_forward> <Id.Lit_Equals '='> <0>}) (C {<iptables>} {<-t>} {<nat>} {<-D>} {<POSTROUTING>} {<-o>} {($ Id.VSub_DollarName '$UPLINK')} {<-j>} {<MASQUERADE>} ) (C {<iptables>} {<-D>} {<FORWARD>} {<-i>} {($ Id.VSub_DollarName '$UPLINK')} {<-o>} {($ Id.VSub_DollarName '$GIFNAME')} {<-m>} {<state>} {<--state>} {<RELATED> <Id.Lit_Comma ','> <ESTABLISHED>} {<-j>} {<ACCEPT>} ) (C {<iptables>} {<-D>} {<FORWARD>} {<-i>} {($ Id.VSub_DollarName '$GIFNAME')} {<-o>} {($ Id.VSub_DollarName '$UPLINK')} {<-j>} {<ACCEPT>} ) ] spids: [465 482] ) ] ) ] )