(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>} {<dhclient>} {<'/var/run/dhclient-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<rm>} {<'/var/run/dhclient.leases-'> ($ Id.VSub_DollarName '$GIFNAME')}) (C {<kill_daemon>} {<dnsmasq>} {<'/var/run/dnsmasq.pid-'> ($ Id.VSub_DollarName '$GIFNAME')} ) (C {<ifconfig>} {($ Id.VSub_DollarName '$GIFNAME')} {<192.168.42.1>} {<up>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<dnsmasq>} {<-x>} {<'/var/run/dnsmasq.pid-'> ($ Id.VSub_DollarName '$GIFNAME') } {<-i>} {($ Id.VSub_DollarName '$GIFNAME')} {<-F192.168.42.11> <Id.Lit_Comma ','> <192.168.42.99>} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<dnsmasq>} {<-x>} {<'/var/run/dnsmasq.pid-'> ($ Id.VSub_DollarName '$GIFNAME')} {<-i>} {($ Id.VSub_DollarName '$GIFNAME')} {<-F192.168.42.11> <Id.Lit_Comma ','> <192.168.42.99>} {<--listen-address>} {<192.168.42.1>} {<-z>} {<-p>} {<0>} ) ] spids: [188 212] ) ] ) ] 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>} {<dhclient>} {<'/var/run/dhclient-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<rm>} {<'/var/run/dhclient.leases-'> ($ Id.VSub_DollarName '$GIFNAME')}) (C {<kill_daemon>} {<dnsmasq>} {<'/var/run/dnsmasq.pid-'> ($ Id.VSub_DollarName '$GIFNAME')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ipaddr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Star '$*'))}) (C {<sed>} {(SQ <'s/.* ip_addr=\\([^ ]*\\).*/\\1/'>)}) ] negated: F ) ) } spids: [302] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ipmask) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Star '$*'))}) (C {<sed>} {(SQ <'s/.* ip_mask=\\([^ ]*\\).*/\\1/'>)}) ] negated: F ) ) } spids: [328] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:goipaddr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Star '$*'))}) (C {<sed>} {(SQ <'s/.* go_ip_addr=\\([^ ]*\\).*/\\1/'>)}) ] negated: F ) ) } spids: [354] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$ipaddr') ($ Id.VSub_DollarName '$ipmask') ($ Id.VSub_DollarName '$goipaddr') ) } ) (C {<grep>} {<-q>} {(SQ <' '>)}) ] negated: F ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ipaddr) op: assign_op.Equal rhs: {(DQ )} spids: [404] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ipmask) op: assign_op.Equal rhs: {(DQ )} spids: [409] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:goipaddr) op: assign_op.Equal rhs: {(DQ )} spids: [414] ) ] ) ] spids: [380 401] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$ipaddr'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<sudo>} {<ifconfig>} {($ Id.VSub_DollarName '$GIFNAME')} {(DQ ($ Id.VSub_DollarName '$ipaddr'))} {<netmask>} {(DQ ($ Id.VSub_DollarName '$ipmask'))} ) (C {<sudo>} {<ip>} {<ro>} {<re>} {<default>} {<via>} {(DQ ($ Id.VSub_DollarName '$goipaddr'))} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [422 435] ) ] ) (C {<dhclient>} {<-pf>} {<'/var/run/dhclient-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} {<-lf>} {<'/var/run/dhclient.leases-'> ($ Id.VSub_DollarName '$GIFNAME')} {<-nw>} {($ Id.VSub_DollarName '$GIFNAME')} ) ] spids: [259 276] ) ] ) ] 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: [529] ) ] ) (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>} {<dnsmasq>} {<'/var/run/dnsmasq.pid-'> ($ Id.VSub_DollarName '$GIFNAME')} ) (C {<ifconfig>} {($ Id.VSub_DollarName '$GIFNAME')} {<0.0.0.0>}) ] spids: [533 550] ) ] ) (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>} {<dhclient>} {<'/var/run/dhclient-'> ($ Id.VSub_DollarName '$GIFNAME') <.pid>} ) (C {<rm>} {<'/var/run/dhclient.leases-'> ($ Id.VSub_DollarName '$GIFNAME')}) (C {<ifconfig>} {($ Id.VSub_DollarName '$GIFNAME')} {<0.0.0.0>}) ] spids: [571 588] ) ] ) ] spids: [509 526] ) ] ) (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: [638] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPLINK) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [642] ) ] ) (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: [618 635] ) ] ) (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: [755] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPLINK) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [759] ) ] ) (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: [735 752] ) ] ) ] )