Signatur
Beschreibung
radius_cvt_addr() ist Bestandteil der PECL-Erweiterung radius und dient dazu, binäre Rohdaten, die über RADIUS-Attribute empfangen wurden, in eine menschenlesbare IPv4-Adresse im Format x.x.x.x umzuwandeln.
Im RADIUS-Protokoll werden IP-Adressen als 4-Byte-Binärstrings übertragen. Um diese Bytes korrekt anzuzeigen oder weiterzuverarbeiten, muss eine Konvertierung stattfinden. Diese Funktion übernimmt genau diese Aufgabe und erspart manuelle Bit-Operationen oder den Umweg über inet_ntop().
Typischerweise wird radius_cvt_addr() nach dem Lesen eines Attributs mit radius_get_attr() oder radius_get_vendor_attr() aufgerufen, wenn der Attributtyp RADIUS_IP_ADDRESS ist und der Rückgabewert als Rohdaten vorliegt.
Diese Funktion ist nur verfügbar, wenn die PECL-Erweiterung radius installiert und geladen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $data Pflicht | string | Ein 4-Byte-Binärstring, wie er aus einem RADIUS-Attribut vom Typ RADIUS_IP_ADDRESS stammt, z. B. geliefert von radius_get_attr(). |
Rückgabewert
x.x.x.x zurück (z. B. 192.168.1.100).Beispiele
IP-Adresse aus RADIUS-Attribut lesen und konvertieren
<?php
// RADIUS-Verbindung aufbauen
$res = radius_auth_open();
radius_add_server($res, '127.0.0.1', 1812, 'geheimes_secret', 3, 3);
radius_create_request($res, RADIUS_ACCESS_REQUEST);
radius_put_string_attr($res, RADIUS_USER_NAME, 'testuser');
radius_put_string_attr($res, RADIUS_USER_PASSWORD, 'passwort');
$reply = radius_send_request($res);
if ($reply === RADIUS_ACCESS_ACCEPT) {
while ($attr = radius_get_attr($res)) {
if ($attr['attr'] === RADIUS_FRAMED_IP_ADDRESS) {
// Rohdaten in lesbare IP umwandeln
$ip = radius_cvt_addr($attr['data']);
echo "Zugewiesene IP-Adresse: " . $ip . PHP_EOL;
}
}
}
radius_close($res);
?>
Manuelle Konvertierung mit simulierten Rohdaten
<?php
// Simulierte Rohdaten: 4 Bytes für die IP 192.168.1.100
$rawData = pack('C4', 192, 168, 1, 100);
$ip = radius_cvt_addr($rawData);
echo "Konvertierte IP: " . $ip . PHP_EOL;
?>
// Wichtig · Fallstricke
Voraussetzung: Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung radius installiert ist. Sie ist nicht Bestandteil des PHP-Kerns und muss separat installiert werden (pecl install radius).
Datenlänge: Es wird ein exakt 4 Byte langer String erwartet (IPv4). Werden fehlerhafte oder zu kurze Daten übergeben, ist das Verhalten undefiniert. Eine Validierung der Attributlänge vor dem Aufruf ist empfehlenswert.
IPv6: Für IPv6-Adressen ist diese Funktion nicht geeignet. IPv6-Adressen in RADIUS sind 16 Byte lang und müssen anders verarbeitet werden, z. B. mit inet_ntop().