1*0eaf192dSyasuoka #include "incs.h"
2*0eaf192dSyasuoka
3*0eaf192dSyasuoka /*
4*0eaf192dSyasuoka * set attributes
5*0eaf192dSyasuoka */
6*0eaf192dSyasuoka
test02(void)7*0eaf192dSyasuoka void test02(void)
8*0eaf192dSyasuoka {
9*0eaf192dSyasuoka RADIUS_PACKET *packet;
10*0eaf192dSyasuoka
11*0eaf192dSyasuoka static const uint8_t data0[] = { 0xfe, 0xdc, 0xba, 0x98 };
12*0eaf192dSyasuoka static const uint8_t data1[] = { 0x76, 0x54, 0x32, 0x10 };
13*0eaf192dSyasuoka static const uint8_t data2[] = { 0x0f, 0x1e, 0x2d, 0x3c };
14*0eaf192dSyasuoka static const uint8_t data3[] = { 0x4b, 0x5a, 0x69, 0x78, 0xff };
15*0eaf192dSyasuoka static const uint8_t attrs_beforeset[] = {
16*0eaf192dSyasuoka 10, 6, 0xfe, 0xdc, 0xba, 0x98,
17*0eaf192dSyasuoka 10, 6, 0x76, 0x54, 0x32, 0x10,
18*0eaf192dSyasuoka RADIUS_TYPE_VENDOR_SPECIFIC, 12, 0, 0, 0, 20, 30, 6, 0x76, 0x54, 0x32, 0x10,
19*0eaf192dSyasuoka RADIUS_TYPE_VENDOR_SPECIFIC, 12, 0, 0, 0, 20, 30, 6, 0xfe, 0xdc, 0xba, 0x98,
20*0eaf192dSyasuoka };
21*0eaf192dSyasuoka static const uint8_t attrs_afterset[] = {
22*0eaf192dSyasuoka 10, 6, 0x0f, 0x1e, 0x2d, 0x3c,
23*0eaf192dSyasuoka 10, 6, 0x76, 0x54, 0x32, 0x10,
24*0eaf192dSyasuoka RADIUS_TYPE_VENDOR_SPECIFIC, 12, 0, 0, 0, 20, 30, 6, 0x0f, 0x1e, 0x2d, 0x3c,
25*0eaf192dSyasuoka RADIUS_TYPE_VENDOR_SPECIFIC, 12, 0, 0, 0, 20, 30, 6, 0xfe, 0xdc, 0xba, 0x98,
26*0eaf192dSyasuoka };
27*0eaf192dSyasuoka
28*0eaf192dSyasuoka packet = radius_new_request_packet(RADIUS_CODE_ACCESS_REQUEST);
29*0eaf192dSyasuoka
30*0eaf192dSyasuoka radius_put_raw_attr(packet, 10, data0, sizeof(data0));
31*0eaf192dSyasuoka radius_put_raw_attr(packet, 10, data1, sizeof(data1));
32*0eaf192dSyasuoka radius_put_vs_raw_attr(packet, 20, 30, data1, sizeof(data1));
33*0eaf192dSyasuoka radius_put_vs_raw_attr(packet, 20, 30, data0, sizeof(data0));
34*0eaf192dSyasuoka
35*0eaf192dSyasuoka CHECK(radius_get_length(packet) == sizeof(attrs_beforeset) + 20);
36*0eaf192dSyasuoka CHECK(memcmp(radius_get_data(packet) + 20, attrs_beforeset, sizeof(attrs_beforeset)) == 0);
37*0eaf192dSyasuoka
38*0eaf192dSyasuoka CHECK(radius_set_raw_attr(packet, 10, data2, sizeof(data2)) == 0);
39*0eaf192dSyasuoka CHECK(radius_set_vs_raw_attr(packet, 20, 30, data2, sizeof(data2)) == 0);
40*0eaf192dSyasuoka
41*0eaf192dSyasuoka CHECK(radius_get_length(packet) == sizeof(attrs_afterset) + 20);
42*0eaf192dSyasuoka CHECK(memcmp(radius_get_data(packet) + 20, attrs_afterset, sizeof(attrs_afterset)) == 0);
43*0eaf192dSyasuoka
44*0eaf192dSyasuoka CHECK(radius_set_raw_attr(packet, 10, data3, sizeof(data2) - 1) != 0);
45*0eaf192dSyasuoka CHECK(radius_set_raw_attr(packet, 10, data3, sizeof(data2) + 1) != 0);
46*0eaf192dSyasuoka CHECK(radius_set_vs_raw_attr(packet, 20, 30, data3, sizeof(data2) - 1) != 0);
47*0eaf192dSyasuoka CHECK(radius_set_vs_raw_attr(packet, 20, 30, data3, sizeof(data2) + 1) != 0);
48*0eaf192dSyasuoka
49*0eaf192dSyasuoka CHECK(radius_get_length(packet) == sizeof(attrs_afterset) + 20);
50*0eaf192dSyasuoka CHECK(memcmp(radius_get_data(packet) + 20, attrs_afterset, sizeof(attrs_afterset)) == 0);
51*0eaf192dSyasuoka
52*0eaf192dSyasuoka CHECK(radius_set_raw_attr(packet, 90, data3, sizeof(data3)) != 0);
53*0eaf192dSyasuoka CHECK(radius_set_vs_raw_attr(packet, 900, 90, data3, sizeof(data3)) != 0);
54*0eaf192dSyasuoka }
55*0eaf192dSyasuoka
56*0eaf192dSyasuoka ADD_TEST(test02)
57