Bug ID 600431: DIAMETER::avp data get "id" ip4|ip6 errors on valid AVP

Last Modified: Sep 13, 2023

Affected Product(s):
BIG-IP LTM, PEM(all modules)

Known Affected Versions:
11.2.1, 11.5.4, 11.5.5, 11.5.6, 11.5.7, 11.5.8, 11.5.9, 11.5.10, 11.6.0, 11.6.1, 11.6.2, 11.6.3, 11.6.3.1, 11.6.3.2, 11.6.3.3, 11.6.3.4, 11.6.4, 11.6.5, 11.6.5.1, 11.6.5.2, 11.6.5.3, 12.0.0, 12.0.0 HF1, 12.1.0 HF1, 12.0.0 HF2, 12.1.0 HF2, 12.0.0 HF3, 12.0.0 HF4, 12.1.1 HF1, 12.1.1 HF2, 12.1.2 HF1, 12.1.2 HF2, 12.1.0, 12.1.1, 12.1.2, 12.1.3, 12.1.3.1, 12.1.3.2, 12.1.3.3, 12.1.3.4, 12.1.3.5, 12.1.3.6, 12.1.3.7, 12.1.4, 12.1.4.1, 12.1.5, 12.1.5.1, 12.1.5.2, 12.1.5.3, 12.1.6

Fixed In:
13.0.0

Opened: Jun 20, 2016

Severity: 4-Minor

Symptoms

TCL error in /var/log/ltm that looks like 'error Buffer error invoked from within "DIAMETER::avp data get 257 ip4 index 0"'

Impact

The iRule ends with an error.

Conditions

iRule that extracts ip address from a diameter avp.

Workaround

Instead of set data [DIAMETER::avp data get 257 ip4] use an iRule such as if { [DIAMETER::avp count 257] > 0 } { set data [DIAMETER::avp data get 257] binary scan $data S family switch $family { 1 { # ipv4 should contains 4 bytes set ip [IP::addr parse -ipv4 $data 2] log local0. "ip = $ip" } 2 { # ipv6 should contains 16 bytes set ip [IP::addr parse -ipv6 $data 2] log local0. "ip = $ip" } default { log local0.alert "address family $family is not supported" } } }

Fix Information

DIAMETER::avp data get "id" ip4|ip6 now correctly returns an ip address on valid ip address AVPs.

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips