added an experimental function qse_rad_insert_extended_vendor_specific_attribute() to support EVS. yet a lot of wors are to be done to support tag, extended, long-extended, tlv
This commit is contained in:
@ -30,6 +30,8 @@
|
||||
#include <qse/types.h>
|
||||
#include <qse/macros.h>
|
||||
|
||||
/* TODO: extended, long-extended, tlv, evs */
|
||||
|
||||
enum qse_raddic_opt_t
|
||||
{
|
||||
QSE_RADDIC_TRAIT
|
||||
@ -182,7 +184,7 @@ typedef struct qse_raddic_const_t qse_raddic_const_t;
|
||||
struct qse_raddic_const_t
|
||||
{
|
||||
qse_uint32_t attr; /* vendor + attribute-value */
|
||||
qse_raddic_const_value_t value;
|
||||
qse_uintmax_t value;
|
||||
qse_raddic_const_t* nextc;
|
||||
qse_char_t name[1];
|
||||
};
|
||||
@ -190,7 +192,7 @@ struct qse_raddic_const_t
|
||||
typedef struct qse_raddic_vendor_t qse_raddic_vendor_t;
|
||||
struct qse_raddic_vendor_t
|
||||
{
|
||||
int vendorpec;
|
||||
unsigned int vendorpec;
|
||||
int type;
|
||||
int length;
|
||||
int flags;
|
||||
@ -265,13 +267,13 @@ QSE_EXPORT qse_raddic_vendor_t* qse_raddic_findvendorbyname (
|
||||
|
||||
QSE_EXPORT qse_raddic_vendor_t* qse_raddic_findvendorbyvalue (
|
||||
qse_raddic_t* dic,
|
||||
int vendorpec
|
||||
unsigned int vendorpec
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_raddic_vendor_t* qse_raddic_addvendor (
|
||||
qse_raddic_t* dic,
|
||||
const qse_char_t* name,
|
||||
int vendorpec
|
||||
unsigned int vendorpec
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_raddic_deletevendorbyname (
|
||||
@ -281,7 +283,7 @@ QSE_EXPORT int qse_raddic_deletevendorbyname (
|
||||
|
||||
QSE_EXPORT int qse_raddic_deletevendorbyvalue (
|
||||
qse_raddic_t* dic,
|
||||
int vendorpec
|
||||
unsigned int vendorpec
|
||||
);
|
||||
|
||||
|
||||
@ -298,9 +300,9 @@ QSE_EXPORT qse_raddic_attr_t* qse_raddic_findattrbyvalue (
|
||||
QSE_EXPORT qse_raddic_attr_t* qse_raddic_addattr (
|
||||
qse_raddic_t* dic,
|
||||
const qse_char_t* name,
|
||||
int vendor,
|
||||
unsigned int vendor,
|
||||
qse_raddic_attr_type_t type,
|
||||
int value,
|
||||
unsigned int value,
|
||||
const qse_raddic_attr_flags_t* flags
|
||||
);
|
||||
|
||||
@ -322,16 +324,16 @@ QSE_EXPORT qse_raddic_const_t* qse_raddic_findconstbyname (
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_raddic_const_t* qse_raddic_findconstbyvalue (
|
||||
qse_raddic_t* dic,
|
||||
qse_uint32_t attr,
|
||||
const qse_raddic_const_value_t* value
|
||||
qse_raddic_t* dic,
|
||||
qse_uint32_t attr,
|
||||
qse_uintmax_t value
|
||||
);
|
||||
|
||||
QSE_EXPORT qse_raddic_const_t* qse_raddic_addconst (
|
||||
qse_raddic_t* dic,
|
||||
const qse_char_t* name,
|
||||
const qse_char_t* attrstr,
|
||||
const qse_raddic_const_value_t* value
|
||||
qse_raddic_t* dic,
|
||||
const qse_char_t* name,
|
||||
const qse_char_t* attrstr,
|
||||
qse_uintmax_t value
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_raddic_deleteconstbyname (
|
||||
@ -341,9 +343,9 @@ QSE_EXPORT int qse_raddic_deleteconstbyname (
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_raddic_deleteconstbyvalue (
|
||||
qse_raddic_t* dic,
|
||||
qse_uint32_t attr,
|
||||
const qse_raddic_const_value_t* value
|
||||
qse_raddic_t* dic,
|
||||
qse_uint32_t attr,
|
||||
qse_uintmax_t value
|
||||
);
|
||||
|
||||
|
||||
|
@ -27,6 +27,8 @@
|
||||
#ifndef _QSE_RAD_RADMSG_H_
|
||||
#define _QSE_RAD_RADMSG_H_
|
||||
|
||||
/* TODO: tag, extended, long-extended, tlv, evs */
|
||||
|
||||
#include <qse/types.h>
|
||||
#include <qse/macros.h>
|
||||
#include <qse/cmn/ipad.h>
|
||||
@ -56,12 +58,18 @@ typedef enum qse_rad_code_t qse_rad_code_t;
|
||||
#define QSE_RAD_MAX_AUTHENTICATOR_LEN 16
|
||||
#define QSE_RAD_MAX_ATTR_VALUE_LEN (QSE_TYPE_MAX(qse_uint8_t) - QSE_SIZEOF(qse_rad_attr_hdr_t))
|
||||
#define QSE_RAD_MAX_VSATTR_VALUE_LEN (QSE_TYPE_MAX(qse_uint8_t) - QSE_SIZEOF(qse_rad_attr_hdr_t) - QSE_SIZEOF(qse_rad_vsattr_hdr_t))
|
||||
#define QSE_RAD_MAX_EXTVSATTR_VALUE_LEN (QSE_TYPE_MAX(qse_uint8_t) - QSE_SIZEOF(qse_rad_extvsattr_hdr_t))
|
||||
|
||||
|
||||
typedef struct qse_rad_hdr_t qse_rad_hdr_t;
|
||||
typedef struct qse_rad_attr_hdr_t qse_rad_attr_hdr_t;
|
||||
typedef struct qse_rad_vsattr_hdr_t qse_rad_vsattr_hdr_t;
|
||||
typedef struct qse_rad_attr_int_t qse_rad_attr_int_t;
|
||||
typedef struct qse_rad_extvsattr_hdr_t qse_rad_extvsattr_hdr_t; /* evs */
|
||||
|
||||
typedef struct qse_rad_attr_uint32_t qse_rad_attr_uint32_t;
|
||||
#if (QSE_SIZEOF_UINT64_T > 0)
|
||||
typedef struct qse_rad_attr_uint64_t qse_rad_attr_uint64_t;
|
||||
#endif
|
||||
|
||||
#include <qse/pack1.h>
|
||||
struct qse_rad_hdr_t
|
||||
@ -80,24 +88,42 @@ struct qse_rad_attr_hdr_t
|
||||
|
||||
struct qse_rad_vsattr_hdr_t
|
||||
{
|
||||
qse_uint8_t id;
|
||||
qse_uint8_t length;
|
||||
qse_uint8_t id; /* type */
|
||||
qse_uint8_t length; /* length */
|
||||
qse_uint32_t vendor; /* in network-byte order */
|
||||
};
|
||||
|
||||
struct qse_rad_attr_int_t
|
||||
struct qse_rad_extvsattr_hdr_t
|
||||
{
|
||||
qse_uint8_t id; /* one of 241-244 */
|
||||
qse_uint8_t length;
|
||||
qse_uint8_t xid; /* extended type. 26 for evs */
|
||||
qse_uint32_t vendor; /* in network-byte order */
|
||||
qse_uint8_t evsid;
|
||||
};
|
||||
|
||||
struct qse_rad_attr_uint32_t
|
||||
{
|
||||
qse_rad_attr_hdr_t hdr;
|
||||
qse_uint32_t val;
|
||||
};
|
||||
|
||||
#if (QSE_SIZEOF_UINT64_T > 0)
|
||||
struct qse_rad_attr_uint64_t
|
||||
{
|
||||
qse_rad_attr_hdr_t hdr;
|
||||
qse_uint64_t val;
|
||||
};
|
||||
#endif
|
||||
|
||||
#include <qse/unpack.h>
|
||||
|
||||
|
||||
typedef int (*qse_rad_attr_walker_t) (
|
||||
const qse_rad_hdr_t* hdr,
|
||||
qse_uint32_t vendor, /* in host-byte order */
|
||||
qse_uint32_t vendor, /* in host-byte order */
|
||||
const qse_rad_attr_hdr_t* attr,
|
||||
void* ctx
|
||||
void* ctx
|
||||
);
|
||||
|
||||
enum qse_rad_attr_id_t
|
||||
@ -223,7 +249,7 @@ QSE_EXPORT int qse_rad_insert_vendor_specific_attribute (
|
||||
|
||||
QSE_EXPORT int qse_rad_delete_attribute (
|
||||
qse_rad_hdr_t* hdr,
|
||||
qse_uint8_t attrid
|
||||
qse_uint8_t attrid
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_rad_delete_vendor_specific_attribute (
|
||||
@ -249,7 +275,7 @@ QSE_EXPORT int qse_rad_insert_wide_string_attribute (
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_rad_insert_string_attribute_with_length (
|
||||
qse_rad_hdr_t* auth,
|
||||
qse_rad_hdr_t* auth,
|
||||
int max,
|
||||
qse_uint32_t vendor, /* in host-byte order */
|
||||
qse_uint8_t id,
|
||||
@ -258,7 +284,7 @@ QSE_EXPORT int qse_rad_insert_string_attribute_with_length (
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_rad_insert_wide_string_attribute_with_length (
|
||||
qse_rad_hdr_t* auth,
|
||||
qse_rad_hdr_t* auth,
|
||||
int max,
|
||||
qse_uint32_t vendor, /* in host-byte order */
|
||||
qse_uint8_t id,
|
||||
@ -266,16 +292,16 @@ QSE_EXPORT int qse_rad_insert_wide_string_attribute_with_length (
|
||||
qse_uint8_t length
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_rad_insert_integer_attribute (
|
||||
qse_rad_hdr_t* auth,
|
||||
int max,
|
||||
qse_uint32_t vendor, /* in host-byte order */
|
||||
qse_uint8_t id,
|
||||
qse_uint32_t value /* in host-byte order */
|
||||
QSE_EXPORT int qse_rad_insert_uint32_attribute (
|
||||
qse_rad_hdr_t* auth,
|
||||
int max,
|
||||
qse_uint32_t vendor, /* in host-byte order */
|
||||
qse_uint8_t id,
|
||||
qse_uint32_t value /* in host-byte order */
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_rad_insert_ipv6prefix_attribute (
|
||||
qse_rad_hdr_t* auth,
|
||||
qse_rad_hdr_t* auth,
|
||||
int max,
|
||||
qse_uint32_t vendor, /* in host-byte order */
|
||||
qse_uint8_t id,
|
||||
@ -292,6 +318,18 @@ QSE_EXPORT int qse_rad_insert_giga_attribute (
|
||||
qse_uint64_t value
|
||||
);
|
||||
|
||||
QSE_EXPORT int qse_rad_insert_extended_vendor_specific_attribute (
|
||||
qse_rad_hdr_t* auth,
|
||||
int max,
|
||||
qse_uint8_t base, /* one of 241-244 */
|
||||
qse_uint32_t vendor,
|
||||
qse_uint8_t attrid,
|
||||
const void* ptr,
|
||||
qse_uint8_t len
|
||||
);
|
||||
|
||||
/* TODO: QSE_EXPORT int qse_rad_delete_extended_vendor_specific_attribute () */
|
||||
|
||||
QSE_EXPORT int qse_rad_set_user_password (
|
||||
qse_rad_hdr_t* auth,
|
||||
int max,
|
||||
@ -329,7 +367,6 @@ QSE_EXPORT int qse_rad_verify_response (
|
||||
const qse_mchar_t* secret
|
||||
);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user