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

nabf5guy's avatar
nabf5guy
Icon for Altostratus rankAltostratus
Apr 30, 2024
Solved

BIG-IP DNS iRule issue with static variable

I am trying to develop an iRule bypassing DNS processing when a DNS request matching a wide ip comes via a specific listener on our BIG-IP DNS. Code is below:

when RULE_INIT {
    set static::ul_ip "10.X.Y.Z"
    set static::ul_debug true
}

when DNS_REQUEST priority 100 {
    if { [IP::addr [IP::local_addr]/32 equals $static::ul_ip]} {

        DNS::disable all
        #apparently event disable is no longer accepted?
        #event disable

        if { [$static::ul_debug]} {
            log local0. "DNS Request [DNS::question name] triggered bypass"
        }
    }
}

This rule is meant to be applied to specific wide ip's (for reasons).

When this rule is applied and tested, I am seeing the message below in /var/log/gtm:

Apr 30 12:06:37 somebigipdns.nope.com err slot1 tmm[18454]: 011a7001:3: TCL error: Rule /Common/ul-bypass-rule <DNS_REQUEST> - can't read "static::ul_ip": no such variable     while executing "IP::addr [IP::local_addr]/32 equals $static::ul_ip"

 

I'm completely unclear on why the TCL error is occurring.

For bonus points, any idea why 'event disable' isn't working in the DNS_REQUEST event? This message shows up in /var/log/ltm unless 'event disable' is commented out:

Apr 30 11:11:27 somebigipdns.nope.com err slot1 mcpd[6981]: 01070151:3: Rule [/Common/ul-bypass-rule] error: /Common/ul-bypass-rule:23: error: [undefined procedure: event][event disable]


Thanks in advance for any assistance provided.

- R

  • Okay, figured out the issue with the static variable.

    If your iRule is a GTM iRule, not an LTM iRule, you need to declare static variables in a fully qualified manner, e.g. 

    set ::static::some_variable_name

    and then call them in a fully qualified manner, .e.g 

    $::static::some_variable_name

    It pays to go back and re-read even the documentation that you think you are familiar with.

2 Replies

  • Okay, figured out the issue with the static variable.

    If your iRule is a GTM iRule, not an LTM iRule, you need to declare static variables in a fully qualified manner, e.g. 

    set ::static::some_variable_name

    and then call them in a fully qualified manner, .e.g 

    $::static::some_variable_name

    It pays to go back and re-read even the documentation that you think you are familiar with.