re/src/stun/ind.c
Alfred E. Heggestad 6648fd2393 update splash
2010-11-03 11:34:14 +00:00

51 lines
927 B
C

/**
* @file ind.c STUN Indication
*
* Copyright (C) 2010 Creytiv.com
*/
#include <re_types.h>
#include <re_sys.h>
#include <re_mem.h>
#include <re_mbuf.h>
#include <re_sa.h>
#include <re_list.h>
#include <re_stun.h>
#include "stun.h"
int stun_indication(int proto, void *sock, const struct sa *dst, size_t presz,
uint16_t method, const uint8_t *key, size_t keylen,
bool fp, uint32_t attrc, ...)
{
uint8_t tid[STUN_TID_SIZE];
struct mbuf *mb;
va_list ap;
uint32_t i;
int err;
if (!sock)
return EINVAL;
mb = mbuf_alloc(2048);
if (!mb)
return ENOMEM;
for (i=0; i<STUN_TID_SIZE; i++)
tid[i] = rand_u32();
va_start(ap, attrc);
mb->pos = presz;
err = stun_msg_vencode(mb, method, STUN_CLASS_INDICATION, tid, NULL,
key, keylen, fp, 0x00, attrc, ap);
va_end(ap);
if (err)
goto out;
mb->pos = presz;
err = stun_send(proto, sock, dst, mb);
out:
mem_deref(mb);
return err;
}