get some constants out of the way

git.mgm/mediaproxy-ng/2.2
Richard Fuchs 12 years ago
parent 4aa3017555
commit f685d9743b

@ -8,6 +8,12 @@
#include "str.h"
#include "aux.h"
#define STUN_CRC_XOR 0x5354554eUL
#define STUN_FINGERPRINT 0x8028
struct stun {
u_int16_t msg_type;
u_int16_t msg_len;
@ -67,7 +73,7 @@ static int stun_attributes(struct stun_attrs *out, str *s) {
if (str_shift(s, len))
return -1;
if (out->msg_integrity.s && ntohs(tlv->type) != 0x8028)
if (out->msg_integrity.s && ntohs(tlv->type) != STUN_FINGERPRINT)
return -1;
switch (ntohs(tlv->type)) {
@ -77,7 +83,7 @@ static int stun_attributes(struct stun_attrs *out, str *s) {
case 0x0008: /* message-integrity */
out->msg_integrity = attr;
break;
case 0x8028: /* fingerprint */
case STUN_FINGERPRINT:
if (attr.len != 4)
return -1;
out->fingerprint_attr = (void *) tlv;
@ -136,8 +142,8 @@ static inline void stun_error_len(int fd, struct sockaddr_in6 *sin, struct stun
fp.crc = crc32(0, iov[0].iov_base, iov[0].iov_len);
fp.crc = crc32(fp.crc, iov[1].iov_base, iov[1].iov_len);
fp.crc = htonl(fp.crc ^ 0x5354554eUL);
fp.tlv.type = htons(0x8028);
fp.crc = htonl(fp.crc ^ STUN_CRC_XOR);
fp.tlv.type = htons(STUN_FINGERPRINT);
fp.tlv.len = htons(4);
mh.msg_name = sin;
@ -151,13 +157,15 @@ static inline void stun_error_len(int fd, struct sockaddr_in6 *sin, struct stun
#define stun_error(fd, sin, str, code, reason) \
stun_error_len(fd, sin, str, code, reason "\0\0\0", strlen(reason))
static int check_fingerprint(str *msg, struct stun_attrs *attrs) {
int len;
u_int32_t crc;
len = attrs->fingerprint_attr - msg->s;
crc = crc32(0, (void *) msg->s, len);
crc ^= 0x5354554eUL;
crc ^= STUN_CRC_XOR;
if (crc != attrs->fingerprint)
return -1;

@ -8,7 +8,7 @@
#include "str.h"
#define STUN_COOKIE 0x2112A442
#define STUN_COOKIE 0x2112A442UL
static inline int is_stun(str *s) {

Loading…
Cancel
Save