value = cf_pair_value(cp);
dv = fr_dict_enum_by_name(attr_packet_type, value, -1);
- if (!dv || (dv->value->vb_uint32 >= FR_VQP_MAX_CODE)) {
+ if (!dv || (dv->value->vb_uint32 >= FR_VMPS_CODE_MAX)) {
cf_log_err(ci, "Unknown VMPS packet type '%s'", value);
return -1;
}
fr_radius_packet_t *packet = request->packet;
fr_dcursor_t cursor;
- fr_assert(data[0] < FR_VQP_MAX_CODE);
+ fr_assert(data[0] < FR_VMPS_CODE_MAX);
RHEXDUMP3(data, data_len, "proto_vmps decode packet");
* Process layer NAK, never respond, or "Do not respond".
*/
if ((buffer_len == 1) ||
- (request->reply->code == FR_RADIUS_CODE_DO_NOT_RESPOND) ||
- (request->reply->code >= FR_VQP_MAX_CODE)) {
+ (request->reply->code == FR_VMPS_DO_NOT_RESPOND) ||
+ (request->reply->code >= FR_VMPS_CODE_MAX)) {
track->do_not_respond = true;
return 1;
}
fr_io_instance_t io; //!< wrapper for IO abstraction
char **allowed_types; //!< names for for 'type = ...'
- bool allowed[FR_VQP_MAX_CODE]; //!< indexed by value
+ bool allowed[FR_VMPS_CODE_MAX]; //!< indexed by value
uint32_t max_packet_size; //!< for message ring buffer.
uint32_t num_messages; //!< for message ring buffer.
- uint32_t priorities[FR_VQP_MAX_CODE]; //!< priorities for individual packets
+ uint32_t priorities[FR_VMPS_CODE_MAX]; //!< priorities for individual packets
} proto_vmps_t;
/*
* VQP is layered over UDP. The default destination port is 1589.
*
*/
-char const *fr_vmps_codes[FR_VQP_MAX_CODE] = {
+char const *fr_vmps_codes[FR_VMPS_CODE_MAX] = {
[FR_PACKET_TYPE_VALUE_JOIN_REQUEST] = "Join-Request",
[FR_PACKET_TYPE_VALUE_JOIN_RESPONSE] = "Join-Response",
[FR_PACKET_TYPE_VALUE_RECONFIRM_REQUEST] = "Reconfirm-Request",
fprintf(fp, " Version:\t\t%u\n", packet[0]);
- if ((packet[1] > 0) && (packet[1] < FR_VQP_MAX_CODE) && fr_vmps_codes[packet[1]]) {
+ if ((packet[1] > 0) && (packet[1] < FR_VMPS_CODE_MAX) && fr_vmps_codes[packet[1]]) {
fprintf(fp, " OpCode:\t\t%s\n", fr_vmps_codes[packet[1]]);
} else {
fprintf(fp, " OpCode:\t\t%u\n", packet[1]);
}
- if ((packet[2] > 0) && (packet[2] < FR_VQP_MAX_CODE) && fr_vmps_codes[packet[2]]) {
+ if ((packet[2] > 0) && (packet[2] < FR_VMPS_CODE_MAX) && fr_vmps_codes[packet[2]]) {
fprintf(fp, " OpCode:\t\t%s\n", fr_vmps_codes[packet[2]]);
} else {
fprintf(fp, " OpCode:\t\t%u\n", packet[2]);
extern "C" {
#endif
-#define FR_VQP_MAX_CODE (5)
-#define FR_RADIUS_CODE_DO_NOT_RESPOND (0)
#define FR_VQP_HDR_LEN (8)
#define FR_VQP_VERSION (1)
void fr_vmps_print_hex(FILE *fp, uint8_t const *packet, size_t packet_len);
ssize_t fr_vmps_encode(fr_dbuff_t *dbuff, uint8_t const *original,
- int code, uint32_t id, fr_dcursor_t *cursor) CC_HINT(nonnull(1));
+ int code, uint32_t id, fr_dcursor_t *cursor) CC_HINT(nonnull(1));
-extern char const *fr_vmps_codes[FR_VQP_MAX_CODE];
+typedef enum {
+ FR_VMPS_JOIN_REQUEST = 1,
+ FR_VMPS_JOIN_RESPONSE = 2,
+ FR_VMPS_RECONFIRM_REQUEST = 3,
+ FR_VMPS_RECONFIRM_RESPONSE = 4,
+ FR_VMPS_CODE_MAX = 5,
+ FR_VMPS_DO_NOT_RESPOND = 256,
+} fr_vmps_packet_code_t;
+
+#define FR_VMPS_PACKET_CODE_VALID(_code) (((_code) > 0) && ((_code) < FR_VMPS_CODE_MAX))
+
+extern char const *fr_vmps_codes[FR_VMPS_CODE_MAX];
int fr_vmps_init(void);