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