radius请求给出错误的值

时间:2013-01-08 09:48:35

标签: c sockets dhcp radius-protocol

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.c用于生成”半径请求“我想用它传递带帧的IP。我的问题是这里PW_USER_PASSWORD发送正确的值,因为它是一个”字符串“类型。但PW_FRAMED_IP_ADDRESS发送错误的值,因为它的类型是“ip”,我发送字符串值.. 如果我在第四个arg中传递“ip”。 rc_avpair_add给出了类型转换错误!!

2 个答案:

答案 0 :(得分:0)

PW_FRAMED_IP_ADDRESS想要第四个参数的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;

答案 1 :(得分:0)

我不确定,但Framed-IP-Address不是字符串属性。这里有更多detail。也许

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)

帮助你?