Forum Discussion
Chris_Miller
Altostratus
Jun 24, 2010Why 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
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)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