For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

janholtz's avatar
janholtz
Icon for Altostratus rankAltostratus
Jul 20, 2010

Simplist irule v9.x to v10.1

Hi all

 

I have an extremely simple irule that currently uses datagroups:

 

-------------------------------------------------------------------------------------------------

 

when CLIENT_ACCEPTED {

 

if { [matchclass [IP::client_addr] eq $::sourcegroup] && [matchclass [IP::local_addr] eq $::destinationgroup] } {

 

pool pool_exceptionpool

 

}

 

}

 

-------------------------------------------------------------------------------------------------

 

This is obviously not CMP friendly.

 

If I wish to make it CMP friendly on V10.1, would my replacement rule simply be:

 

-------------------------------------------------------------------------------------------------

 

when CLIENT_ACCEPTED {

 

if { [matchclass [IP::client_addr] eq $static::sourcegroup] && [matchclass [IP::local_addr] eq $static::destinationgroup] } {

 

pool pool_exceptionpool

 

}

 

}

 

 

The contents of the datagroups are static.

 

 

Best Regards

 

Jan

 

2 Replies

  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    Hi Jan,

    Datagroups can be accessed by name without the $:: prefix using the class commands. matchclass and findclass have been deprecated in v10.

    when CLIENT_ACCEPTED {
       if { [class match [IP::client_addr] eq sourcegroup] && [class match [IP::local_addr] eq destinationgroup] } {
          pool pool_exceptionpool
       }
    }
    

    http://devcentral.f5.com/wiki/default.aspx/iRules/class

    Aaron
  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    $static::variable_name should only be used as global variable replacements that aren't changed after RULE_INIT runs. Their value isn't synchronized across TMMs after RULE_INIT. An example case for using static:: variables is setting a debug value (set static::my_rule_debug 1) or other configuration options that apply for all connections and don't need to change over the course of connections.

     

     

    As far as I'm aware, static::class_name wouldn't work for accessing a datagroup (aka class).

     

     

    We had a discussion on variable scope in v10 in the thread below. SMP and Jason provided some good info in it.

     

     

    v10 - local vs. global vars

     

    http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172260/aff/5/showtab/groupforums/Default.aspx

     

     

    Aaron