0
if (rc_avpair_add(rh, &send, PW_USER_PASSWORD, passwd, -1, 0) == NULL)
                return ERROR_RC;

        if (rc_avpair_add(rh, &send, PW_NAS_PORT_TYPE, nas_port_type, -1, 0) == NULL)
                return ERROR_RC;

        if (rc_avpair_add(rh, &send, PW_FRAMED_IP_ADDRESS,"172.17.14.90", -1, 0) == NULL)
                return ERROR_RC;

上記は「radexample.cradiusrequest」の生成に使用したコードの一部です。FramedIPも渡します。私の問題はここにあります。PW_USER_PASSWORDは「string」タイプであるため正しい値を送信しますが、PW_FRAMED_IP_ADDRESSは誤った値を送信します。その型は「ip」で、文字列値を送信しています。4番目の引数に「ip」を渡すと rc_avpair_add 、型変換のエラーが発生します。

4

2 に答える 2

0

よくわかりませんが、Framed-IP-Addressは文字列属性ではありません。詳細はこちらです。多分

unsigned int ip=(unsigned int)inet_addr("172.17.14.90");
if (rc_avpair_add(rh, &send, PW_FRAMED_IP_ADDRESS, &ip, sizeof(ip), 0) == NULL)

あなたを助けますか?

于 2013-01-08T10:07:58.507 に答える
0

PW_FRAMED_IP_ADDRESS4番目の引数のintが必要です。

最も簡単な方法は次のとおりです。

uint32_t framed_addr = 0;
inet_pton(AF_INET, "172.17.14.90", &framed_addr);
framed_addr = htonl(framed_addr); //network order
if (rc_avpair_add(rh, &send, PW_FRAMED_IP_ADDRESS,&framed_addr, -1, 0) == NULL)
            return ERROR_RC;
于 2013-01-08T10:02:44.183 に答える