Forum Discussion
Chris_Miller
Altostratus
15 years agoWhy do we need to use [IP::addr [IP::client_addr]]?
Why can't we simply compare [IP::client_addr] on its own? I'm a bit confused as to why IP::addr has to be used...the thread below is what peaked my curiosity:
http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172675/aff/5/showtab/groupforums/Default.aspx
6 Replies
- Michael_Yates
Nimbostratus
[IP::addr] - Performs comparison of IP address/subnet/supernet to IP address/subnet/supernet.
In the example they are asking if incoming Client IP Address is contained within any of the listed subnets, then send that traffic to a specific pool, not the one tied to the Virtual Server:[IP::addr [IP::client_addr]]/24 equals xxx.xxx.xxx.xxx][
The Wiki Entry has some good examples: http://devcentral.f5.com/Wiki/default.aspx/iRules.IP__addr - hoolio
Cirrostratus
I was looking for a post from unRuleY which had more detail, but couldn't find it. I believe IP::addr does a more efficient byte comparison than you could do with a string comparison. And as Michael points out, IP::addr allows you to do CIDR comparisons that you couldn't easily do with string operations.
Aaron - Chris_Miller
Altostratus
Posted By hoolio on 06/24/2010 11:18 AM
I was looking for a post from unRuleY which had more detail, but couldn't find it. I believe IP::addr does a more efficient byte comparison than you could do with a string comparison. And as Michael points out, IP::addr allows you to do CIDR comparisons that you couldn't easily do with string operations.
Aaron
Most of my comparisons are comparing client_addr or server_addr to address-type datagroups which contain both networks and hosts...is there any benefit to using [IP::addr[IP::server_addr]] or should I just save myself the characters? - hoolio
Cirrostratus
I expect [IP::addr $ip] would return 1 if $ip was an IP address and a runtime error if it's not. So I don't see any reason to use that. Running a class command (class, matchclass, etc) with an IP address/network against an address type datagroup should use a byte comparison and be more efficient than a string comparison.
Aaron - JRahm
Admin
Just an FYI, most efficient format for comparison is
[IP::addr [IP::client_addr] equals xxx.xxx.xxx.0/24] - hoolio
Cirrostratus
Hey Jason,
Thanks again for all of your testing and the article for this!
Aaron
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects