示例#1
0
inline AAA_AVP *cdp_avp_new_Integer32(int avp_code,int avp_flags,int avp_vendorid,int32_t data)
{
	char x[4];
	str s={x,4};
	set_4bytes(x,data);
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,s,AVP_DUPLICATE_DATA);
}
示例#2
0
inline AAA_AVP* cdp_avp_new_Address(int avp_code,int avp_flags,int avp_vendorid,ip_address data)
{
	char x[18];
	str s;
	s.s = x;
	s.len = 0;

	switch (data.ai_family){
		case AF_INET:
			x[0]=0;
			x[1]=1;
			memcpy(x+2, (char*)(&data.ip.v4.s_addr), 4);
			s.len=6;
			break;
		case AF_INET6:
			x[0]=0;
			x[1]=2;
			s.len=18;
			memcpy(x+2,data.ip.v6.s6_addr,16);
			break;
		default:
			LOG(L_ERR,"Unimplemented for ai_family %d! (AVP Code %d Vendor-Id %d)\n",data.ai_family,avp_code,avp_vendorid);
			return 0;
	}
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,s,AVP_DUPLICATE_DATA);
}
示例#3
0
inline AAA_AVP* cdp_avp_new_Time(int avp_code,int avp_flags,int avp_vendorid,time_t data)
{
	char x[4];
	str s={x,4};
	uint32_t ntime = htonl(data+EPOCH_UNIX_TO_EPOCH_NTP);
	memcpy(x,&ntime,sizeof(uint32_t));	
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,s,AVP_DUPLICATE_DATA);
}
示例#4
0
inline AAA_AVP *cdp_avp_new_Unsigned32(int avp_code,int avp_flags,int avp_vendorid,uint32_t data)
{
	char x[4];
	str s={x,4};
	uint32_t ndata=htonl(data);
	memcpy(x,&ndata,sizeof(uint32_t));
	//*((uint32_t*)x) = htonl(data);
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,s,AVP_DUPLICATE_DATA);
}
示例#5
0
inline AAA_AVP *cdp_avp_new_Unsigned64(int avp_code,int avp_flags,int avp_vendorid,uint64_t data)
{
	char x[8];
	str s={x,8};
	int i;
	for(i=7;i>=0;i--){
		x[i] = data%256;
		data /= 256;
	}
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,s,AVP_DUPLICATE_DATA);
}
示例#6
0
inline AAA_AVP *cdp_avp_new_Integer64(int avp_code,int avp_flags,int avp_vendorid,int64_t data)
{
	char x[8];
	str s={x,8};
	int i;
	for(i=7;i>=0;i--){
		x[i] = data%256;
		data /= 256;
	}					//TODO - check if this is correct
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,s,AVP_DUPLICATE_DATA);	
}
示例#7
0
/**
 * Creates a grouped AVP from a list
 * @param avp_code
 * @param avp_flags
 * @param avp_vendorid
 * @param list
 * @param list_do - if this is AVP_FREE_DATA then the list will aso be freed
 * @return
 */
inline AAA_AVP *cdp_avp_new_Grouped(int avp_code,int avp_flags,int avp_vendorid,AAA_AVP_LIST *list,AVPDataStatus list_do)
{
	str grp;
	if (!list){
		LOG(L_ERR,"The AAA_AVP_LIST was NULL!\n");
		return 0;
	}
	grp = cdp->AAAGroupAVPS(*list);
	if (!grp.len){
		LOG(L_ERR,"The AAA_AVP_LIST provided was empty! (AVP Code %d VendorId %d)\n",avp_code,avp_vendorid);
		return 0;
	}
	if (list_do==AVP_FREE_DATA)
		cdp->AAAFreeAVPList(list);
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,grp,AVP_FREE_DATA);
}
示例#8
0
/**
 * Adds a new AVP to a list
 * @param list
 * @param d
 * @param len
 * @param avp_code
 * @param avp_flags
 * @param avp_vendorid
 * @param data_do
 * @return
 */
inline int cdp_avp_add_new_to_list(AAA_AVP_LIST *list,int avp_code,int avp_flags,int avp_vendorid,str data,AVPDataStatus data_do)
{
    AAA_AVP *avp = cdp_avp_new(avp_code,avp_flags,avp_vendorid,data,data_do);
    if (!list) {
        LOG(L_ERR,"Failed adding to NULL list AVP with Code [%d] Flags [%d] VendorID [%d] from data of length [%d]!\n",
            avp_code,avp_flags,avp_vendorid,data.len);
        if (avp) cdp->AAAFreeAVP(&avp);
        return 0;
    }
    if (!avp) {
        LOG(L_ERR,"Error creating AVP with Code [%d] Flags [%d] VendorID [%d] from data of length [%d]!\n",
            avp_code,avp_flags,avp_vendorid,data.len);
        return 0;
    }
    cdp->AAAAddAVPToList(list,avp);
    return 1;
}
示例#9
0
inline AAA_AVP *cdp_avp_new_OctetString(int avp_code,int avp_flags,int avp_vendorid,str data,AVPDataStatus data_do)
{
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,data,data_do);
}
示例#10
0
inline AAA_AVP* cdp_avp_new_QoSFilterRule(int avp_code,int avp_flags,int avp_vendorid,str data,AVPDataStatus data_do)
{
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,data,data_do);
}
示例#11
0
inline AAA_AVP* cdp_avp_new_DiameterURI(int avp_code,int avp_flags,int avp_vendorid,str data,AVPDataStatus data_do)
{
	return cdp_avp_new(avp_code,avp_flags,avp_vendorid,data,data_do);
}