(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPFILTER_FMRI='> name:IPFILTER_FMRI) op: assign_op.Equal rhs: {(DQ <'svc:/network/ipfilter:default'>)} spids: [73] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ETC_IPF_DIR='> name:ETC_IPF_DIR) op: assign_op.Equal rhs: {<'/etc/ipf'>} spids: [78] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPNATCONF='> name:IPNATCONF) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<'/usr/bin/svcprop'>} {<-p>} {<'config/ipnat_config_file'>} {($ Id.VSub_DollarName IPFILTER_FMRI)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [81] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPNATCONF='> name:IPNATCONF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ETC_IPF_DIR) <'/ipnat.conf'>} spids: [118] ) ] redirects: [] ) ] spids: [102 115] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPPOOLCONF='> name:IPPOOLCONF) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<'/usr/bin/svcprop'>} {<-p>} {<'config/ippool_config_file'>} {($ Id.VSub_DollarName IPFILTER_FMRI)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [124] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPPOOLCONF='> name:IPPOOLCONF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ETC_IPF_DIR) <'/ippool.conf'>} spids: [161] ) ] redirects: [] ) ] spids: [145 158] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VAR_IPF_DIR='> name:VAR_IPF_DIR) op: assign_op.Equal rhs: {<'/var/run/ipf'>} spids: [167] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPFILCONF='> name:IPFILCONF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf.conf'>} spids: [170] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6FILCONF='> name:IP6FILCONF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf6.conf'>} spids: [174] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPFILOVRCONF='> name:IPFILOVRCONF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf_ovr.conf'>} spids: [178] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP6FILOVRCONF='> name:IP6FILOVRCONF) op: assign_op.Equal rhs: {($ Id.VSub_DollarName VAR_IPF_DIR) <'/ipf6_ovr.conf'>} spids: [182] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF_LOCK='> name:IPF_LOCK) op: assign_op.Equal rhs: {<'/var/run/ipflock'>} spids: [186] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONF_FILES='> name:CONF_FILES) op: assign_op.Equal rhs: {(DQ )} spids: [189] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONF6_FILES='> name:CONF6_FILES) op: assign_op.Equal rhs: {(DQ )} spids: [193] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NAT_FILES='> name:NAT_FILES) op: assign_op.Equal rhs: {(DQ )} spids: [197] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF_SUFFIX='> name:IPF_SUFFIX) op: assign_op.Equal rhs: {(DQ <.ipf>)} spids: [201] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF6_SUFFIX='> name:IPF6_SUFFIX) op: assign_op.Equal rhs: {(DQ <.ipf6>)} spids: [206] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NAT_SUFFIX='> name:NAT_SUFFIX) op: assign_op.Equal rhs: {(DQ <.nat>)} spids: [211] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CURRENT_VERSION='> name:CURRENT_VERSION) op: assign_op.Equal rhs: {<1>} spids: [220] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IPF_FMRI='> name:IPF_FMRI) op: assign_op.Equal rhs: {(DQ <'svc:/network/ipfilter:default'>)} spids: [224] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INETDFMRI='> name:INETDFMRI) op: assign_op.Equal rhs: {(DQ <'svc:/network/inetd:default'>)} spids: [229] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RPCBINDFMRI='> name:RPCBINDFMRI) op: assign_op.Equal rhs: {(DQ <'svc:/network/rpc/bind:default'>)} spids: [234] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SMF_ONLINE='> name:SMF_ONLINE) op: assign_op.Equal rhs: {(DQ <online>)} spids: [240] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SMF_MAINT='> name:SMF_MAINT) op: assign_op.Equal rhs: {(DQ <maintenance>)} spids: [245] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SMF_NONE='> name:SMF_NONE) op: assign_op.Equal rhs: {(DQ <none>)} spids: [250] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONTEXT_PG='> name:FW_CONTEXT_PG) op: assign_op.Equal rhs: {(DQ <firewall_context>)} spids: [256] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'METHOD_PROP='> name:METHOD_PROP) op: assign_op.Equal rhs: {(DQ <ipf_method>)} spids: [261] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONFIG_PG='> name:FW_CONFIG_PG) op: assign_op.Equal rhs: {(DQ <firewall_config>)} spids: [267] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'POLICY_PROP='> name:POLICY_PROP) op: assign_op.Equal rhs: {(DQ <policy>)} spids: [272] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'APPLY2_PROP='> name:APPLY2_PROP) op: assign_op.Equal rhs: {(DQ <apply_to>)} spids: [277] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'APPLY2_6_PROP='> name:APPLY2_6_PROP) op: assign_op.Equal rhs: {(DQ <apply_to_6>)} spids: [282] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXCEPTIONS_PROP='> name:EXCEPTIONS_PROP) op: assign_op.Equal rhs: {(DQ <exceptions>)} spids: [287] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXCEPTIONS_6_PROP='> name:EXCEPTIONS_6_PROP) op: assign_op.Equal rhs: {(DQ <exceptions_6>)} spids: [292] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGET_PROP='> name:TARGET_PROP) op: assign_op.Equal rhs: {(DQ <target>)} spids: [297] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGET_6_PROP='> name:TARGET_6_PROP) op: assign_op.Equal rhs: {(DQ <target_6>)} spids: [302] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BLOCKPOL_PROP='> name:BLOCKPOL_PROP) op: assign_op.Equal rhs: {(DQ <block_policy>)} spids: [307] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONFIG_DEF_PG='> name:FW_CONFIG_DEF_PG) op: assign_op.Equal rhs: {(DQ <firewall_config_default>)} spids: [313] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FW_CONFIG_OVR_PG='> name:FW_CONFIG_OVR_PG) op: assign_op.Equal rhs: {(DQ <firewall_config_override>)} spids: [318] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CUSTOM_FILE_PROP='> name:CUSTOM_FILE_PROP) op: assign_op.Equal rhs: {(DQ <custom_policy_file>)} spids: [323] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CUSTOM_FILE_6_PROP='> name:CUSTOM_FILE_6_PROP) op: assign_op.Equal rhs: {(DQ <custom_policy_file_6>)} spids: [328] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPEN_PORTS_PROP='> name:OPEN_PORTS_PROP) op: assign_op.Equal rhs: {(DQ <open_ports>)} spids: [333] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_HOST='> name:PREFIX_HOST) op: assign_op.Equal rhs: {(DQ <'host:'>)} spids: [339] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_NET='> name:PREFIX_NET) op: assign_op.Equal rhs: {(DQ <'network:'>)} spids: [344] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_POOL='> name:PREFIX_POOL) op: assign_op.Equal rhs: {(DQ <'pool:'>)} spids: [349] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREFIX_IF='> name:PREFIX_IF) op: assign_op.Equal rhs: {(DQ <'if:'>)} spids: [354] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_CONFIG='> name:GLOBAL_CONFIG) op: assign_op.Equal rhs: {(DQ )} spids: [360] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_POLICY='> name:GLOBAL_POLICY) op: assign_op.Equal rhs: {(DQ )} spids: [364] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GLOBAL_BLOCK_POLICY='> name: GLOBAL_BLOCK_POLICY ) op: assign_op.Equal rhs: {(DQ )} spids: [368] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVINFO='> name:SERVINFO) op: assign_op.Equal rhs: {<'/usr/lib/servinfo'>} spids: [373] ) ] redirects: [] ) (command.ShFunction name: global_get_prop_value body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target_pg='> name:target_pg) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [408] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prop='> name:prop) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [412] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} {<-a>} {(DQ ($ Id.VSub_Number 1))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extra_pg='> name:extra_pg) op: assign_op.Equal rhs: {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} spids: [462] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extra_pg='> name:extra_pg) op: assign_op.Equal rhs: {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} spids: [469] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'value='> name:value) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName GLOBAL_CONFIG)}) (C {<awk>} { (SQ <'{\n'> <'\t\tfound=0\n'> <'\t\tfor (i=1; i<=NF; i++) {\n'> <'\t\t\tif (found == 1) {\n'> <'\t\t\t\tif (index($i, target_pg) == 1 || index($i, extra_pg) == 1)\n'> <'\t\t\t\t\tbreak;\n'> <'\n'> <'\t\t\t\tprint $i;\n'> <'\t\t\t}\n'> <'\n'> <'\t\t\tif (split($i, values, "/") < 2)\n'> <'\t\t\t\tcontinue;\n'> <'\n'> <'\t\t\tif (values[1] == target_pg && values[2] == prop)\n'> <'\t\t\t\tfound=1;\n'> <'\t\t}\n'> <'\t}'> ) } {<Id.Lit_VarLike 'target_pg='> ($ Id.VSub_DollarName target_pg)} {<Id.Lit_VarLike 'prop='> ($ Id.VSub_DollarName prop)} {<Id.Lit_VarLike 'extra_pg='> ($ Id.VSub_DollarName extra_pg)} ) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [474] ) ] redirects: [] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName value))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: global_init body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_CONFIG='> name:GLOBAL_CONFIG) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<svcprop>} {<-p>} {(${ Id.VSub_Name FW_CONFIG_OVR_PG)} {<-p>} {(${ Id.VSub_Name FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName IPF_FMRI)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<awk>} {(SQ <'{$2=" "; print $0}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [593] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GLOBAL_POLICY='> name:GLOBAL_POLICY) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName POLICY_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [632] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GLOBAL_BLOCK_POLICY='> name: GLOBAL_BLOCK_POLICY ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName BLOCKPOL_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [644] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_config_pg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName IPF_FMRI))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {(DQ ($ Id.VSub_DollarName FW_CONFIG_DEF_PG))})] spids: [679 696] ) ] else_action: [(C {<echo>} {(DQ ($ Id.VSub_DollarName FW_CONFIG_PG))})] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_policy body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [742] ) ] redirects: [] ) (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name POLICY_PROP)} {($ Id.VSub_Number 1)} ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_block_policy body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [792] ) ] redirects: [] ) (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name BLOCKPOL_PROP)} {($ Id.VSub_Number 1)} ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_exceptions body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [836] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exceptions='> name:exceptions) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name EXCEPTIONS_PROP) } {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [846] ) ] redirects: [] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName exceptions)}) (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_exceptions_6 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [900] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exceptions6='> name:exceptions6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name EXCEPTIONS_6_PROP) } {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [910] ) ] redirects: [] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName exceptions6)}) (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_apply2_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [964] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2='> name:apply2) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name APPLY2_PROP)} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [974] ) ] redirects: [] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName apply2)}) (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_apply2_6_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [1028] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2_6='> name:apply2_6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name APPLY2_6_PROP)} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1038] ) ] redirects: [] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName apply2_6)}) (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_target_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [1092] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name TARGET_PROP)} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1102] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName target))} {<-o>} {(DQ ($ Id.VSub_DollarName target))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target='> name:target) op: assign_op.Equal rhs: {<any>} spids: [1147] ) ] redirects: [] ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName target)}) (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_target_6_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'config_pg='> name:config_pg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_config_pg>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [1184] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target6='> name:target6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName config_pg) <'/'> (${ Id.VSub_Name TARGET_6_PROP)} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1194] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName target6))} {<-o>} {(DQ ($ Id.VSub_DollarName target6))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'target6='> name:target6) op: assign_op.Equal rhs: {<any>} spids: [1239] ) ] redirects: [] ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName target6)}) (C {<sed>} {<-e>} {(SQ <'s/\\\\//g'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: check_ipf_dir body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName VAR_IPF_DIR)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<mkdir>} {($ Id.VSub_DollarName VAR_IPF_DIR)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: fmri_to_file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<check_ipf_dir>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fprefix='> name:fprefix) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name VAR_IPF_DIR) <'/'> (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Number 1)}) (C {<tr>} {<-s>} {(SQ <'/:'>)} {(SQ <__>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) ) } spids: [1326] ) ] redirects: [] ) (C {<echo>} {(DQ (${ Id.VSub_Name fprefix) (${ Id.VSub_Number 2))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: service_is_enabled body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'enabled_ovr='> name:enabled_ovr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-c>} {<-p>} {<'general_ovr/enabled'>} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1402] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName enabled_ovr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName enabled_ovr))} {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] spids: [1421 1434] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'enabled='> name:enabled) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<svcprop>} {<-c>} {<-p>} {<'general/enabled'>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1468] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName enabled))} {<-a>} {(DQ ($ Id.VSub_DollarName enabled))} {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: service_check_state body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<svcprop>} {<-p>} {<'restarter/next_state'>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName SMF_NONE))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children:[(C {<sleep>} {<1>})]) redirects: [] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<svcprop>} {<-p>} {<'restarter/state'>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_IP body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<value_is_interface>} {($ Id.VSub_Number 1)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 1))}) (C {<sed>} {<-n>} {<-e>} { (DQ <'s,^'> (${ Id.VSub_Name PREFIX_POOL) <Id.Lit_BadBackslash '\\'> <'(.*'> <Id.Lit_BadBackslash '\\'> <'),pool/'> <Id.Lit_BadBackslash '\\'> <'1,p'> ) } {<-e>} { (DQ <'s,^'> (${ Id.VSub_Name PREFIX_HOST) <Id.Lit_BadBackslash '\\'> <'(.*'> <Id.Lit_BadBackslash '\\'> <'),'> <Id.Lit_BadBackslash '\\'> <'1,p'> ) } {<-e>} { (DQ <'s,^'> (${ Id.VSub_Name PREFIX_NET) <Id.Lit_BadBackslash '\\'> <'(.*'> <Id.Lit_BadBackslash '\\'> <'),'> <Id.Lit_BadBackslash '\\'> <'1,p'> ) } {<-e>} {(DQ <'s,^any,any,p'>)} ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_interface body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<value_is_interface>} {($ Id.VSub_Number 1)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'scratch='> name:scratch) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 1))}) (C {<sed>} {<-e>} {(DQ <'s/^'> (${ Id.VSub_Name PREFIX_IF) <'//'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1770] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<ifconfig>} {($ Id.VSub_DollarName scratch)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName scratch)}) (C {<sed>} {<-e>} {(SQ <'s/:.*//'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: value_is_interface body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Number 1)}) (command.Simple words: [{<grep>} {(DQ <'^'> (${ Id.VSub_Name PREFIX_IF))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: remove_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}) (command.Simple words: [{<ipf>} {($ Id.VSub_Number 2)} {<-r>} {<-f>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: remove_nat_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}) (command.Simple words: [{<ipnat>} {<-r>} {<-f>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: check_ipf_syntax body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<ipf>} {($ Id.VSub_Number 2)} {<-n>} {<-f>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: check_nat_syntax body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<ipnat>} {<-n>} {<-f>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: unique_ports body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Star '*')}) (C {<xargs>} {<-n>} {<1>} {<echo>}) (C {<sort>} {<-u>}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: file_get_ports body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple words: [{<ipf>} {($ Id.VSub_Number 2)} {<-n>} {<-v>} {<-f>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<sed>} {<-n>} {<-e>} {(SQ <'s/.*to.* port = \\([a-z0-9]*\\).*/\\1/p'>)}) (C {<uniq>}) (C {<awk>} {(SQ <'{if (length($0) > 1) {printf("%s ", $1)}}'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_active_ports body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple words: [{<ipfstat>} {($ Id.VSub_Number 1)} {<-io>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<sed>} {<-n>} {<-e>} {(SQ <'s/.*to.* port = \\([a-z0-9]*\\).*/\\1/p'>)}) (C {<uniq>}) (C {<awk>} {(SQ <'{if (length($0) > 1) {printf("%s ",$1)}}'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: sets_check_duplicate body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 1))} {<-o>} {<-z>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ForEach iter_names: [p] iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)}]) body: (command.DoGroup children: [ (command.ForEach iter_names: [ap] iterable: (for_iter.Words words:[{($ Id.VSub_Number 2)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName p))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName ap))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] ) redirects: [] ) ] ) redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: update_check_ipf_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lports='> name:lports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<file_get_ports>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}) right: <Id.Backtick_Right '`'> ) } spids: [2300] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lactive_ports='> name:lactive_ports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_active_ports>} {($ Id.VSub_Number 2)}) right: <Id.Backtick_Right '`'> ) } spids: [2312] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<sets_check_duplicate>} {(DQ ($ Id.VSub_DollarName lports))} {(DQ ($ Id.VSub_DollarName lactive_ports))} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server_port_list='> name:server_port_list) op: assign_op.Equal rhs: {(DQ )} spids: [2342] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server_port_list_6='> name:server_port_list_6) op: assign_op.Equal rhs: {(DQ )} spids: [2346] ) ] redirects: [] ) (command.ShFunction name: check_ipf_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lports='> name:lports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<file_get_ports>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}) right: <Id.Backtick_Right '`'> ) } spids: [2394] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_Equals '='>} {(DQ <-6>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<sets_check_duplicate>} {(DQ ($ Id.VSub_DollarName lports))} {(DQ ($ Id.VSub_DollarName server_port_list_6))} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'server_port_list_6='> name: server_port_list_6 ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName server_port_list_6) <' '> ($ Id.VSub_DollarName lports) ) } spids: [2444] ) ] redirects: [] ) ] spids: [2407 2424] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<sets_check_duplicate>} {(DQ ($ Id.VSub_DollarName lports))} {(DQ ($ Id.VSub_DollarName server_port_list))} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'server_port_list='> name: server_port_list ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName server_port_list) <' '> ($ Id.VSub_DollarName lports) ) } spids: [2472] ) ] redirects: [] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: prepend_new_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}) (command.Pipeline children: [ (C {<tail>} {<-r>} {($ Id.VSub_Number 1)}) (C {<sed>} {<-e>} {(SQ <'s/^[a-z]/@0 &/'>)}) (command.Simple words: [{<ipf>} {($ Id.VSub_Number 2)} {<-f>} {<->}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: append_new_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<check_ipf_syntax>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}) (command.Simple words: [{<ipf>} {($ Id.VSub_Number 2)} {<-f>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: append_new_nat_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<check_nat_syntax>} {($ Id.VSub_Number 1)}) (command.Simple words: [{<ipnat>} {<-f>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: tuple_get_port body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'port_str='> name:port_str) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 1))}) (command.Simple words: [{<sed>} {<-e>} {(SQ <'s/ //g; s/\\\\//g; s/.*://'>)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [2619] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName port_str))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName port_str)}) (command.Simple words: [{<grep>} {(DQ <->)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName port_str)}) (command.Simple words: [{<grep>} {(SQ <'^[0-9]\\{1,5\\}-[0-9]\\{1,5\\}$'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ports='> name:ports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName port_str)}) (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (command.Simple words: [{<read>} {<a>} {<b>}] redirects: [] more_env: [ (env_pair name: IFS val: {<->} spids: [2738] ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName a)} { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\-'> ch: - ) <le> } {($ Id.VSub_DollarName b)} {<Id.Lit_RBracket ']'>} ) (C {<echo>} {($ Id.VSub_DollarName a)} {($ Id.VSub_DollarName b)} ) (C {<echo>} {($ Id.VSub_DollarName b)} {($ Id.VSub_DollarName a)} ) ] ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [2721] ) ] redirects: [] ) (command.ForEach iter_names: [p] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName ports)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName p)} {<-gt>} {<65535>} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] ) redirects: [] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName ports))}) ] spids: [2681 2694] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName port_str))}) (command.Simple words: [{<grep>} {(SQ <'^[0-9]\\{1,5\\}$'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName port_str)} {<-gt>} {<65535>} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName port_str))}) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: tuple_get_proto body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 1))}) (command.Simple words: [{<sed>} {<-e>} {(SQ <'s/ //g; s/:.*//'>)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [2906] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_Equals '='>} {(DQ <tcp>)} {<-o>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_Equals '='>} {(DQ <udp>)} {<Id.Lit_RBracket ']'>} ) (C {<echo>} {($ Id.VSub_DollarName proto)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: ipf_get_lock body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newpid='> name:newpid) op: assign_op.Equal rhs: {($ Id.VSub_Dollar '$')} spids: [3002] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName IPF_LOCK) <'/pid'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'curpid='> name:curpid) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<cat>} {($ Id.VSub_DollarName IPF_LOCK) <'/pid'>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3024] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName curpid))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName newpid))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<ps>} {<-p>} {($ Id.VSub_DollarName curpid)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<rm>} {<-r>} {($ Id.VSub_DollarName IPF_LOCK)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] ) ] spids: [3007 3021] ) ] else_action: [] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_Colon ':'>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{<mkdir>} {($ Id.VSub_DollarName IPF_LOCK)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) terminator: <Id.Op_Semi _> ) (C {<sleep>} {<1>}) ] ) redirects: [] ) (command.Simple words: [{<echo>} {($ Id.VSub_DollarName newpid)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName IPF_LOCK) <'/pid'>} ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: ipf_remove_lock body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName IPF_LOCK) <'/pid'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {($ Id.VSub_DollarName IPF_LOCK) <'/pid'>}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Dollar '$'))} {<Id.Lit_RBracket ']'>} ) (C {<rm>} {<-r>} {($ Id.VSub_DollarName IPF_LOCK)}) ] ) ] spids: [3172 3186] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: custom_set_symlink body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<check_ipf_dir>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Simple words: [{<rm>} {($ Id.VSub_DollarName IPFILCONF)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) (command.Simple words: [{<ln>} {<-s>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName IPFILCONF)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: custom_set_symlink_6 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<check_ipf_dir>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Simple words: [{<rm>} {($ Id.VSub_DollarName IP6FILCONF)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) (command.Simple words: [{<ln>} {<-s>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName IP6FILCONF)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: replace_file body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig='> name:orig) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [3417] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new='> name:new) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [3422] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-L>} {(DQ ($ Id.VSub_DollarName orig))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rm>} {($ Id.VSub_DollarName orig)}) (C {<touch>} {($ Id.VSub_DollarName orig)}) ] spids: [3440 3453] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<check_ipf_dir>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<mv>} {($ Id.VSub_DollarName new)} {($ Id.VSub_DollarName orig)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: process_server_svc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'service='> name:service) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [3525] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'policy='> name:policy) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_policy>} {(${ Id.VSub_Name service)}) right: <Id.Backtick_Right '`'> ) } spids: [3529] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName IPF_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [3558] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file6='> name:file6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName IPF6_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [3570] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName file))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Simple words: [{<echo>} {(DQ <'# '> ($ Id.VSub_DollarName service))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name file)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'# '> ($ Id.VSub_DollarName service))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name file6)} ) ] more_env: [] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName policy))} {<Id.Lit_Equals '='>} {(DQ <use_global>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'restarter='> name:restarter) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {<'general/restarter'>} {($ Id.VSub_DollarName service)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3660] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName restarter))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName INETDFMRI))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iana_name='> name:iana_name) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {<'inetd/name'>} {($ Id.VSub_DollarName service)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3697] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'isrpc='> name:isrpc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {<'inetd/isrpc'>} {($ Id.VSub_DollarName service)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3714] ) ] redirects: [] ) ] spids: [3677 3694] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iana_name='> name:iana_name) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName FW_CONTEXT_PG) <'/name'>} {($ Id.VSub_DollarName service)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3734] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'isrpc='> name:isrpc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName FW_CONTEXT_PG) <'/isrpc'>} {($ Id.VSub_DollarName service)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3752] ) ] redirects: [] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName iana_name))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName isrpc))} {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tports='> name:tports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-R>} {<-p>} {<-t>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3852] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tports6='> name:tports6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-R>} {<-p>} {<-t6>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3873] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName tports))} {<-o>} {<-n>} {(DQ ($ Id.VSub_DollarName tports6))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tports='> name:tports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<unique_ports>} {($ Id.VSub_DollarName tports)} {($ Id.VSub_DollarName tports6)} ) right: <Id.Backtick_Right '`'> ) } spids: [3918] ) ] redirects: [] ) (command.ForEach iter_names: [tport] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName tports)}]) body: (command.DoGroup children: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport)} {($ Id.VSub_DollarName file)} ) ] ) redirects: [] ) ] spids: [3894 3915] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName tports6))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [tport6] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName tports6)}]) body: (command.DoGroup children: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport6)} {($ Id.VSub_DollarName file6)} {<_6>} ) ] ) redirects: [] ) ] spids: [3967 3980] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uports='> name:uports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-R>} {<-p>} {<-u>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4021] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uports6='> name:uports6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-R>} {<-p>} {<-u6>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4042] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName uports))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uports='> name:uports) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<unique_ports>} {($ Id.VSub_DollarName uports)} {($ Id.VSub_DollarName uports6)} ) right: <Id.Backtick_Right '`'> ) } spids: [4079] ) ] redirects: [] ) (command.ForEach iter_names: [uport] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName uports)}]) body: (command.DoGroup children: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport)} {($ Id.VSub_DollarName file)} ) ] ) redirects: [] ) ] spids: [4063 4076] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName uports6))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [uport6] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName uports6)}]) body: (command.DoGroup children: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport6)} {($ Id.VSub_DollarName file6)} {<_6>} ) ] ) redirects: [] ) ] spids: [4128 4141] ) ] else_action: [] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [3824 3841] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tport='> name:tport) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-p>} {<-t>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4203] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName tport))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport)} {($ Id.VSub_DollarName file)} ) ] spids: [4222 4243] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tport6='> name:tport6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-p>} {<-t6>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4265] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName tport6))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <tcp>)} {($ Id.VSub_DollarName tport6)} {($ Id.VSub_DollarName file6)} {<_6>} ) ] spids: [4284 4305] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uport='> name:uport) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-p>} {<-u>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4329] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName uport))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport)} {($ Id.VSub_DollarName file)} ) ] spids: [4348 4369] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uport6='> name:uport6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName SERVINFO)} {<-p>} {<-u6>} {<-s>} {($ Id.VSub_DollarName iana_name)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4391] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName uport6))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<generate_rules>} {($ Id.VSub_DollarName service)} {($ Id.VSub_DollarName policy)} {(DQ <udp>)} {($ Id.VSub_DollarName uport6)} {($ Id.VSub_DollarName file6)} {<_6>} ) ] spids: [4410 4431] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: generate_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'service='> name:service) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [4505] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mypolicy='> name:mypolicy) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [4509] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto) op: assign_op.Equal rhs: {($ Id.VSub_Number 3)} spids: [4513] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'port='> name:port) op: assign_op.Equal rhs: {($ Id.VSub_Number 4)} spids: [4517] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out) op: assign_op.Equal rhs: {($ Id.VSub_Number 5)} spids: [4521] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_6='> name:_6) op: assign_op.Equal rhs: {($ Id.VSub_Number 6)} spids: [4525] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} {<Id.Lit_Equals '='>} {(DQ <use_global>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tcp_opts='> name:tcp_opts) op: assign_op.Equal rhs: {(DQ )} spids: [4564] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_Equals '='>} {(DQ <tcp>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tcp_opts='> name:tcp_opts) op: assign_op.Equal rhs: {(DQ <'flags S keep state keep frags'>)} spids: [4585] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'block_policy='> name:block_policy) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_block_policy>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [4592] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName block_policy))} {<Id.Lit_Equals '='>} {(DQ <use_global>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'block_policy='> name: block_policy ) op: assign_op.Equal rhs: {(${ Id.VSub_Name GLOBAL_BLOCK_POLICY)} spids: [4622] ) ] redirects: [] ) ] spids: [4602 4619] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName block_policy))} {<Id.Lit_Equals '='>} {(DQ <return>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_Equals '='>} {(DQ <tcp>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'block_policy='> name: block_policy ) op: assign_op.Equal rhs: {(DQ <return-rst>)} spids: [4668] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <tcp>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'block_policy='> name: block_policy ) op: assign_op.Equal rhs: {(DQ <return-icmp-as-dest>)} spids: [4691] ) ] redirects: [] ) ] ) ] spids: [4632 4649] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'block_policy='> name:block_policy) op: assign_op.Equal rhs: {(DQ )} spids: [4700] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'iplist='> name:iplist) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_target> (${ Id.VSub_Name _6) <_list>} {($ Id.VSub_DollarName service)} ) right: <Id.Backtick_Right '`'> ) } spids: [4709] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} {<Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [ip] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'daddr='> name:daddr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name ip)}) right: <Id.Backtick_Right '`'> ) } spids: [4768] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Simple words: [ {<echo>} { (DQ <'pass in log quick proto '> (${ Id.VSub_Name proto) <' from any to '> (${ Id.VSub_Name daddr) ) } { (DQ <'port = '> (${ Id.VSub_Name port) <' '> (${ Id.VSub_Name tcp_opts) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [4736 4753] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} {<Id.Lit_Equals '='>} {(DQ <deny>)} {<Id.Lit_RBracket ']'>} ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd) op: assign_op.Equal rhs: {(DQ <pass>)} spids: [4881] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd) op: assign_op.Equal rhs: {(DQ <'block '> (${ Id.VSub_Name block_policy))} spids: [4887] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName mypolicy))} {<Id.Lit_Equals '='>} {(DQ <allow>)} {<Id.Lit_RBracket ']'>} ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd) op: assign_op.Equal rhs: {(DQ <'block '> (${ Id.VSub_Name block_policy))} spids: [4917] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd) op: assign_op.Equal rhs: {(DQ <pass>)} spids: [4926] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_exceptions> (${ Id.VSub_Name _6)} {($ Id.VSub_DollarName service)}) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [4985] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [ip] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'daddr='> name: daddr ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name ip)}) right: <Id.Backtick_Right '`'> ) } spids: [5031] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name ecmd) <' in log quick on '> (${ Id.VSub_Name ifc) <' from any to'> ) } { (DQ (${ Id.VSub_Name daddr) <' port = '> (${ Id.VSub_Name port) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [4995 5016] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'saddr='> name:saddr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [5111] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName saddr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [ip] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'daddr='> name: daddr ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name ip)}) right: <Id.Backtick_Right '`'> ) } spids: [5159] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name ecmd) <' in log quick proto '> (${ Id.VSub_Name proto) <' from '> (${ Id.VSub_Name saddr) ) } { (DQ <'to '> (${ Id.VSub_Name daddr) <' port = '> (${ Id.VSub_Name port) <' '> (${ Id.VSub_Name tcp_opts) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) ] spids: [5123 5144] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_apply2> (${ Id.VSub_Name _6) <_list>} {($ Id.VSub_DollarName service)} ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [5297] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [ip] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'daddr='> name: daddr ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name ip)}) right: <Id.Backtick_Right '`'> ) } spids: [5343] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' in log quick on '> (${ Id.VSub_Name ifc) <' from any to'> ) } { (DQ (${ Id.VSub_Name daddr) <' port = '> (${ Id.VSub_Name port) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [5307 5328] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'saddr='> name:saddr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [5423] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName saddr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [ip] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'daddr='> name: daddr ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name ip)}) right: <Id.Backtick_Right '`'> ) } spids: [5471] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' in log quick proto '> (${ Id.VSub_Name proto) <' from '> (${ Id.VSub_Name saddr) ) } { (DQ <'to '> (${ Id.VSub_Name daddr) <' port = '> (${ Id.VSub_Name port) <' '> (${ Id.VSub_Name tcp_opts) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) ] spids: [5435 5456] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ForEach iter_names: [ip] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName iplist)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'daddr='> name:daddr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name ip)}) right: <Id.Backtick_Right '`'> ) } spids: [5571] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName daddr))} {<-o>} {(DQ ($ Id.VSub_DollarName daddr))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name ecmd) <' in log quick proto '> (${ Id.VSub_Name proto) <' from any to '> (${ Id.VSub_Name daddr) ) } {(DQ <'port = '> (${ Id.VSub_Name port) <' '> (${ Id.VSub_Name tcp_opts))} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: process_service body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName IPF_FMRI))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<service_check_state>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName SMF_MAINT)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'method='> name:method) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName FW_CONTEXT_PG) <'/'> ($ Id.VSub_DollarName METHOD_PROP) } {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<sed>} {(SQ <'s/\\\\//g'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [5738] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName method))} {<-a>} {(DQ ($ Id.VSub_DollarName method))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Subshell child: (command.Simple words: [{<exec>} {($ Id.VSub_DollarName method)} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) redirects: [] ) ] spids: [5773 5799] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<svcprop>} {<-p>} {($ Id.VSub_DollarName FW_CONFIG_PG)} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<process_server_svc>} {($ Id.VSub_Number 1)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: process_nonsvc_progs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [5889] ) ] redirects: [] ) (command.Simple words: [{<echo>} {(DQ <'# Non-service programs rules'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'progs='> name:progs) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName OPEN_PORTS_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [5905] ) ] redirects: [] ) (command.ForEach iter_names: [prog] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName progs)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName prog))} {<-o>} {(DQ ($ Id.VSub_DollarName prog))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'port='> name:port) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<tuple_get_port>} {($ Id.VSub_DollarName prog)}) right: <Id.Backtick_Right '`'> ) } spids: [5958] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<-o>} {<-z>} {(DQ ($ Id.VSub_DollarName port))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proto='> name:proto) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<tuple_get_proto>} {($ Id.VSub_DollarName prog)}) right: <Id.Backtick_Right '`'> ) } spids: [5992] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (C {<set>} {<-->} {($ Id.VSub_DollarName port)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'pass in log quick from any to any'>)} { (DQ <'port '> (${ Id.VSub_Number 1) <' >< '> (${ Id.VSub_Number 2) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] spids: [6041 6054] ) ] else_action: [ (command.Simple words: [ {<echo>} { (DQ <'pass in log quick proto '> (${ Id.VSub_Name proto) <' from any'> ) } { (DQ <'to any port '> (${ Id.VSub_Number 1) <' >< '> (${ Id.VSub_Number 2) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] redirects: [] ) ] spids: [6025 6038] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName proto))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'pass in log quick from any to any'>)} {(DQ <'port = '> (${ Id.VSub_Number 1))} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] spids: [6120 6133] ) ] else_action: [ (command.Simple words: [ {<echo>} { (DQ <'pass in log quick proto '> (${ Id.VSub_Name proto) <' from any'> ) } {(DQ <'to any port = '> (${ Id.VSub_Number 1))} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name out)} ) ] more_env: [] do_fork: T ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: create_global_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName CUSTOM_FILE_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [6241] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file6='> name:file6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName CUSTOM_FILE_6_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [6253] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName file))} {<Id.Lit_RBracket ']'>} ) (C {<custom_set_symlink>} {($ Id.VSub_DollarName file)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName file6))} {<Id.Lit_RBracket ']'>} ) (C {<custom_set_symlink_6>} {($ Id.VSub_DollarName file6)}) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [6221 6238] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMP='> name:TEMP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<'/var/run/ipf.conf.pid'> ($ Id.VSub_Dollar '$') <.XXXXXX>}) right: <Id.Backtick_Right '`'> ) } spids: [6310] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMP6='> name:TEMP6) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<'/var/run/ipf6.conf.pid'> ($ Id.VSub_Dollar '$') <.XXXXXX>}) right: <Id.Backtick_Right '`'> ) } spids: [6322] ) ] redirects: [] ) (C {<process_nonsvc_progs>} {($ Id.VSub_DollarName TEMP)}) (C {<process_nonsvc_progs>} {($ Id.VSub_DollarName TEMP6)}) (command.Simple words: [{<echo>} {(DQ <'# Global Default rules'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'# Global Default rules'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'pass out log quick all keep state'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'pass out log quick all keep state'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) ] spids: [6369 6387] ) ] else_action: [] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} arms: [ (case_arm pat_list: [{(SQ <none>)}] action: [ (C {<replace_file>} {(${ Id.VSub_Name IPFILCONF)} {(${ Id.VSub_Name TEMP)}) (C {<replace_file>} {(${ Id.VSub_Name IP6FILCONF)} {(${ Id.VSub_Name TEMP6)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] spids: [6427 6430 6464 -1] ) (case_arm pat_list: [{(SQ <deny>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd) op: assign_op.Equal rhs: {(DQ <pass>)} spids: [6475] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd) op: assign_op.Equal rhs: {(DQ <block>)} spids: [6481] ) ] redirects: [] ) ] spids: [6469 6472 6487 -1] ) (case_arm pat_list: [{(SQ <allow>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ecmd='> name:ecmd) op: assign_op.Equal rhs: {(DQ <block>)} spids: [6497] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd) op: assign_op.Equal rhs: {(DQ <pass>)} spids: [6503] ) ] redirects: [] ) ] spids: [6491 6494 6509 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] spids: [6512 6513 6522 -1] ) ] redirects: [] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName EXCEPTIONS_PROP)} ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [6577] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name ecmd) <' in log quick on '> (${ Id.VSub_Name ifc) <' all'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [6587 6608] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [6638] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name ecmd) <' in log quick from '> (${ Id.VSub_Name addr) <' to any'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) ] spids: [6650 6671] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName EXCEPTIONS_6_PROP)} ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [6749] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name ecmd) <' in log quick on '> (${ Id.VSub_Name ifc) <' all'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [6759 6780] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [6809] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name ecmd) <' in log quick from '> (${ Id.VSub_Name addr) <' to any'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) ] spids: [6821 6842] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName APPLY2_PROP)} ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [6920] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' in log quick on '> (${ Id.VSub_Name ifc) <' all'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [6930 6951] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [6980] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' in log quick from '> (${ Id.VSub_Name addr) <' to any'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) ] spids: [6992 7013] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_DEF_PG)} {($ Id.VSub_DollarName APPLY2_6_PROP)} ) right: <Id.Backtick_Right '`'> ) } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [7090] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' in log quick on '> (${ Id.VSub_Name ifc) <' all'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [7100 7121] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [7150] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' in log quick from '> (${ Id.VSub_Name addr) <' to any'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) ] spids: [7162 7183] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} {<Id.Lit_Equals '='>} {(DQ <allow>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<'/sbin/netstrategy'>}) (command.Simple words: [{<grep>} {<dhcp>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'pass out log quick from any port = 68'>)} {(DQ <'keep state'>)} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'pass in log quick from any to any port = 68'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.Simple words: [ {<echo>} {(DQ <'pass out log quick from any port = 546'>)} {(DQ <'keep state'>)} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'pass in log quick from any to any port = 546'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) ] spids: [7259 7272] ) ] else_action: [] redirects: [] ) (command.Simple words: [{<echo>} {(DQ <'block in log all'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'block in log all'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) ] spids: [7212 7229] ) ] else_action: [] redirects: [] ) (C {<replace_file>} {(${ Id.VSub_Name IPFILCONF)} {(${ Id.VSub_Name TEMP)}) (C {<replace_file>} {(${ Id.VSub_Name IP6FILCONF)} {(${ Id.VSub_Name TEMP6)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: create_global_ovr_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'# \'custom\' global policy'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName IPFILOVRCONF)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'# \'custom\' global policy'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName IP6FILOVRCONF)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [7442 7459] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ovr_policy='> name:ovr_policy) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} {($ Id.VSub_DollarName POLICY_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [7504] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ovr_policy))} {<Id.Lit_Equals '='>} {(DQ <none>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'# global override policy is \'none\''>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName IPFILOVRCONF)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'# global override policy is \'none\''>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName IP6FILOVRCONF)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [7516 7533] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMP='> name:TEMP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<'/var/run/ipf_ovr.conf.pid'> ($ Id.VSub_Dollar '$') <.XXXXXX>} ) right: <Id.Backtick_Right '`'> ) } spids: [7566] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ovr_policy))} {<Id.Lit_Equals '='>} {(DQ <deny>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd) op: assign_op.Equal rhs: {(DQ <'block in log quick'>)} spids: [7594] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ovr_policy))} {<Id.Lit_Equals '='>} {(DQ <allow>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'acmd='> name:acmd) op: assign_op.Equal rhs: {(DQ <'pass in log'>)} spids: [7616] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2_list='> name:apply2_list) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} {($ Id.VSub_DollarName APPLY2_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [7623] ) ] redirects: [] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName apply2_list)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [7675] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ (${ Id.VSub_Name acmd) <' on '> (${ Id.VSub_Name ifc) <' all'>)} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [7685 7706] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [7735] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' from '> (${ Id.VSub_Name addr) <' to any'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP)} ) ] more_env: [] do_fork: T ) ] spids: [7747 7768] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply2_6_list='> name:apply2_6_list) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<global_get_prop_value>} {($ Id.VSub_DollarName FW_CONFIG_OVR_PG)} {($ Id.VSub_DollarName APPLY2_6_PROP)} ) right: <Id.Backtick_Right '`'> ) } spids: [7797] ) ] redirects: [] ) (command.ForEach iter_names: [name] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName apply2_6_list)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName name))} {<-o>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(SQ <'""'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifc='> name:ifc) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_interface>} {($ Id.VSub_DollarName name)}) right: <Id.Backtick_Right '`'> ) } spids: [7849] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName ifc))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ (${ Id.VSub_Name acmd) <' on '> (${ Id.VSub_Name ifc) <' all'>)} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [7859 7880] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'addr='> name:addr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_IP>} {(${ Id.VSub_Name name)}) right: <Id.Backtick_Right '`'> ) } spids: [7909] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName addr))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ (${ Id.VSub_Name acmd) <' from '> (${ Id.VSub_Name addr) <' to any'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TEMP6)} ) ] more_env: [] do_fork: T ) ] spids: [7921 7942] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<replace_file>} {(${ Id.VSub_Name IPFILOVRCONF)} {(${ Id.VSub_Name TEMP)}) (C {<replace_file>} {(${ Id.VSub_Name IP6FILOVRCONF)} {(${ Id.VSub_Name TEMP6)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: svc_mark_maintenance body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<svcadm>} {<mark>} {<maintenance>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'date='> name:date) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<date>}) right: <Id.Backtick_Right '`'> ) } spids: [8035] ) ] redirects: [] ) (C {<echo>} { (DQ <'[ '> ($ Id.VSub_DollarName date) <' '> (${ Id.VSub_Number 0) <': '> ($ Id.VSub_Number 1) <' has invalid ipf configuration. ]'> ) } ) (C {<echo>} { (DQ <'[ '> ($ Id.VSub_DollarName date) <' '> (${ Id.VSub_Number 0) <': placing '> ($ Id.VSub_Number 1) <' in maintenance. ]'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ipfile='> name:ipfile) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName IPF_SUFFIX)}) right: <Id.Backtick_Right '`'> ) } spids: [8090] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ipfile))} {<Id.Lit_RBracket ']'>} ) (C {<mv>} {($ Id.VSub_DollarName ipfile)} {(DQ ($ Id.VSub_DollarName ipfile) <.bak>)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip6file='> name:ip6file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName IPF6_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [8124] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>} ) (C {<mv>} {($ Id.VSub_DollarName ip6file)} {(DQ ($ Id.VSub_DollarName ip6file) <.bak>)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'natfile='> name:natfile) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName NAT_SUFFIX)}) right: <Id.Backtick_Right '`'> ) } spids: [8159] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName natfile))} {<Id.Lit_RBracket ']'>} ) (C {<mv>} {($ Id.VSub_DollarName natfile)} {(DQ ($ Id.VSub_DollarName natfile) <.bak>)}) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: svc_is_server body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<svcprop>} {<-p>} {($ Id.VSub_DollarName FW_CONFIG_PG)} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: create_services_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<ipf_get_lock>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'allsvcs='> name:allsvcs) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<svcprop>} {<-cf>} {<-p>} {<'general/enabled'>} {<-p>} {<'general_ovr/enabled'>} {(SQ <'*'>)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<sed>} {<-n>} {(SQ <'s,^\\(svc:.*\\)/:properties/.* true$,\\1,p'>)}) (C {<sort>} {<-u>}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [8297] ) ] redirects: [] ) (command.ForEach iter_names: [s] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName allsvcs)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<service_is_enabled>} {($ Id.VSub_DollarName s)}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<process_service>} {($ Id.VSub_DollarName s)}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ipfile='> name:ipfile) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName s)} {($ Id.VSub_DollarName IPF_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [8393] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ipfile))} {<-a>} {<-r>} {(DQ ($ Id.VSub_DollarName ipfile))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ipfile)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [8434 8447] ) ] else_action: [] redirects: [] ) (C {<svc_is_server>} {($ Id.VSub_DollarName s)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_ipf_rules>} {($ Id.VSub_DollarName ipfile)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [8488 8501] ) ] else_action: [] redirects: [] ) ] spids: [8467 8480] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CONF_FILES='> name: CONF_FILES ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName CONF_FILES) <' '> ($ Id.VSub_DollarName ipfile) ) } spids: [8518] ) ] redirects: [] ) ] spids: [8405 8426] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip6file='> name:ip6file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName s)} {($ Id.VSub_DollarName IPF6_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [8530] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ip6file))} {<-a>} {<-r>} {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ip6file)} {<-6>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [8573 8586] ) ] else_action: [] redirects: [] ) (C {<svc_is_server>} {($ Id.VSub_DollarName s)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_ipf_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [8629 8642] ) ] else_action: [] redirects: [] ) ] spids: [8606 8619] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CONF6_FILES='> name: CONF6_FILES ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName CONF6_FILES) <' '> ($ Id.VSub_DollarName ip6file) ) } spids: [8659] ) ] redirects: [] ) ] spids: [8542 8563] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'natfile='> name:natfile) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName s)} {($ Id.VSub_DollarName NAT_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [8671] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName natfile))} {<-a>} {<-r>} {(DQ ($ Id.VSub_DollarName natfile))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_nat_syntax>} {($ Id.VSub_DollarName natfile)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName s)}) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [8712 8725] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NAT_FILES='> name: NAT_FILES ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName NAT_FILES) <' '> ($ Id.VSub_DollarName natfile) ) } spids: [8740] ) ] redirects: [] ) ] spids: [8683 8704] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<ipf_remove_lock>}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: service_update_rules body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'svc='> name:svc) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [8787] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ipfile='> name:ipfile) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName svc)} {($ Id.VSub_DollarName IPF_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [8792] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip6file='> name:ip6file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName svc)} {($ Id.VSub_DollarName IPF6_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [8804] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ipfile))} {<Id.Lit_RBracket ']'>} ) (C {<remove_rules>} {($ Id.VSub_DollarName ipfile)}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>} ) (C {<remove_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName ipfile))} {<-a>} {<-z>} {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'natfile='> name:natfile) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<fmri_to_file>} {($ Id.VSub_DollarName svc)} {($ Id.VSub_DollarName NAT_SUFFIX)} ) right: <Id.Backtick_Right '`'> ) } spids: [8879] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName natfile))} {<Id.Lit_RBracket ']'>} ) (C {<remove_nat_rules>} {($ Id.VSub_DollarName natfile)}) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<service_is_enabled>} {($ Id.VSub_DollarName svc)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<service_check_state>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName SMF_MAINT)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<process_service>} {($ Id.VSub_DollarName svc)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ipfile))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ipfile)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [8978 8991] ) ] else_action: [] redirects: [] ) ] spids: [8957 8970] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_ipf_syntax>} {($ Id.VSub_DollarName ip6file)} {<-6>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9034 9047] ) ] else_action: [] redirects: [] ) ] spids: [9011 9024] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName natfile))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<check_nat_syntax>} {($ Id.VSub_DollarName natfile)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9088 9101] ) ] else_action: [] redirects: [] ) ] spids: [9067 9080] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ipfile))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_is_server>} {($ Id.VSub_DollarName svc)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<update_check_ipf_rules>} {($ Id.VSub_DollarName ipfile)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9163 9176] ) ] else_action: [] redirects: [] ) ] spids: [9142 9155] ) ] else_action: [] redirects: [] ) (C {<prepend_new_rules>} {($ Id.VSub_DollarName ipfile)}) (C {<remove_rules>} {($ Id.VSub_DollarName IPFILOVRCONF)}) (C {<prepend_new_rules>} {($ Id.VSub_DollarName IPFILOVRCONF)}) ] spids: [9121 9134] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName ip6file))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_is_server>} {($ Id.VSub_DollarName svc)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<update_check_ipf_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<svc_mark_maintenance>} {($ Id.VSub_DollarName svc)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [9276 9289] ) ] else_action: [] redirects: [] ) ] spids: [9253 9266] ) ] else_action: [] redirects: [] ) (C {<prepend_new_rules>} {($ Id.VSub_DollarName ip6file)} {<-6>}) (C {<remove_rules>} {($ Id.VSub_DollarName IP6FILOVRCONF)} {<-6>}) (C {<prepend_new_rules>} {($ Id.VSub_DollarName IP6FILOVRCONF)} {<-6>}) ] spids: [9232 9245] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName natfile))} {<Id.Lit_RBracket ']'>} ) (C {<append_new_nat_rules>} {($ Id.VSub_DollarName natfile)}) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: service_update body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'svc='> name:svc) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [9401] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {<0>} spids: [9405] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName GLOBAL_POLICY))} {<Id.Lit_Equals '='>} {(DQ <custom>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<service_check_state>} {($ Id.VSub_DollarName SMF_FMRI)} {($ Id.VSub_DollarName SMF_ONLINE)} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<ipf_get_lock>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<service_update_rules>} {($ Id.VSub_DollarName svc)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {<1>} spids: [9470] ) ] redirects: [] ) ] ) (C {<ipf_remove_lock>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName ret)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<global_init>}) ] )