summaryrefslogtreecommitdiff
path: root/pjnath/src/pjnath/stun_msg.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-03-18 17:39:27 +0000
committerBenny Prijono <bennylp@teluu.com>2007-03-18 17:39:27 +0000
commit25c436a6432ebac429285c81f990653a4c52dd3c (patch)
tree8f145c79bd09aa7bd7390100f809ca72bf2f069b /pjnath/src/pjnath/stun_msg.c
parent331af12f95e6c79555ce45e5ea9c387fd70915dc (diff)
Changed pj_sockaddr structure and added pjnath project for ICE/STUN stuffs
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1080 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath/src/pjnath/stun_msg.c')
-rw-r--r--pjnath/src/pjnath/stun_msg.c84
1 files changed, 42 insertions, 42 deletions
diff --git a/pjnath/src/pjnath/stun_msg.c b/pjnath/src/pjnath/stun_msg.c
index 1c750d8e..b361898f 100644
--- a/pjnath/src/pjnath/stun_msg.c
+++ b/pjnath/src/pjnath/stun_msg.c
@@ -16,9 +16,9 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <pjlib-util/stun_msg.h>
+#include <pjnath/stun_msg.h>
+#include <pjnath/errno.h>
#include <pjlib-util/crc32.h>
-#include <pjlib-util/errno.h>
#include <pjlib-util/hmac_sha1.h>
#include <pjlib-util/md5.h>
#include <pj/assert.h>
@@ -558,7 +558,7 @@ pj_stun_sockaddr_attr_create(pj_pool_t *pool,
attr = PJ_POOL_ZALLOC_T(pool, pj_stun_sockaddr_attr);
INIT_ATTR(attr, attr_type, STUN_GENERIC_IP_ADDR_LEN);
- pj_memcpy(&attr->addr, addr, addr_len);
+ pj_memcpy(&attr->sockaddr, addr, addr_len);
attr->xor_ed = xor_ed;
*p_attr = attr;
@@ -606,19 +606,19 @@ static pj_status_t decode_sockaddr_attr(pj_pool_t *pool,
/* Check that the attribute length is valid */
if (attr->hdr.length != STUN_GENERIC_IP_ADDR_LEN)
- return PJLIB_UTIL_ESTUNINATTRLEN;
+ return PJNATH_ESTUNINATTRLEN;
/* Check address family */
val = *(pj_uint8_t*)(buf + ATTR_HDR_LEN + 1);
/* Check address family is valid (only supports ipv4 for now) */
if (val != 1)
- return PJLIB_UTIL_ESTUNIPV6NOTSUPP;
+ return PJNATH_ESTUNIPV6NOTSUPP;
/* Get port and address */
- pj_sockaddr_in_init(&attr->addr.ipv4, NULL, 0);
- pj_memcpy(&attr->addr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2);
- pj_memcpy(&attr->addr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4);
+ pj_sockaddr_in_init(&attr->sockaddr.ipv4, NULL, 0);
+ pj_memcpy(&attr->sockaddr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2);
+ pj_memcpy(&attr->sockaddr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4);
/* Done */
*p_attr = attr;
@@ -644,22 +644,22 @@ static pj_status_t decode_xored_sockaddr_attr(pj_pool_t *pool,
/* Check that the attribute length is valid */
if (attr->hdr.length != STUN_GENERIC_IP_ADDR_LEN)
- return PJLIB_UTIL_ESTUNINATTRLEN;
+ return PJNATH_ESTUNINATTRLEN;
/* Check address family */
val = *(pj_uint8_t*)(buf + ATTR_HDR_LEN + 1);
/* Check address family is valid (only supports ipv4 for now) */
if (val != 1)
- return PJLIB_UTIL_ESTUNIPV6NOTSUPP;
+ return PJNATH_ESTUNIPV6NOTSUPP;
/* Get port and address */
- pj_sockaddr_in_init(&attr->addr.ipv4, NULL, 0);
- pj_memcpy(&attr->addr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2);
- pj_memcpy(&attr->addr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4);
+ pj_sockaddr_in_init(&attr->sockaddr.ipv4, NULL, 0);
+ pj_memcpy(&attr->sockaddr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2);
+ pj_memcpy(&attr->sockaddr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4);
- attr->addr.ipv4.sin_port ^= 0x2112;
- attr->addr.ipv4.sin_addr.s_addr ^= pj_htonl(0x2112A442);
+ attr->sockaddr.ipv4.sin_port ^= pj_htons(0x2112);
+ attr->sockaddr.ipv4.sin_addr.s_addr ^= pj_htonl(0x2112A442);
/* Done */
*p_attr = attr;
@@ -693,17 +693,17 @@ static pj_status_t encode_sockaddr_attr(const void *a, pj_uint8_t *buf,
*buf++ = '\0';
/* Family (IPv4 only for now) */
- PJ_ASSERT_RETURN(ca->addr.addr.sa_family == PJ_AF_INET, PJ_EINVAL);
+ PJ_ASSERT_RETURN(ca->sockaddr.addr.sa_family == PJ_AF_INET, PJ_EINVAL);
*buf++ = 1;
if (ca->xor_ed) {
pj_uint32_t addr;
pj_uint16_t port;
- addr = ca->addr.ipv4.sin_addr.s_addr;
- port = ca->addr.ipv4.sin_port;
+ addr = ca->sockaddr.ipv4.sin_addr.s_addr;
+ port = ca->sockaddr.ipv4.sin_port;
- port ^= 0x2112;
+ port ^= pj_htons(0x2112);
addr ^= pj_htonl(0x2112A442);
/* Port */
@@ -716,11 +716,11 @@ static pj_status_t encode_sockaddr_attr(const void *a, pj_uint8_t *buf,
} else {
/* Port */
- pj_memcpy(buf, &ca->addr.ipv4.sin_port, 2);
+ pj_memcpy(buf, &ca->sockaddr.ipv4.sin_port, 2);
buf += 2;
/* Address */
- pj_memcpy(buf, &ca->addr.ipv4.sin_addr, 4);
+ pj_memcpy(buf, &ca->sockaddr.ipv4.sin_addr, 4);
buf += 4;
}
@@ -892,7 +892,7 @@ static pj_status_t decode_empty_attr(pj_pool_t *pool,
/* Check that the attribute length is valid */
if (attr->hdr.length != ATTR_HDR_LEN)
- return PJLIB_UTIL_ESTUNINATTRLEN;
+ return PJNATH_ESTUNINATTRLEN;
/* Done */
*p_attr = attr;
@@ -992,7 +992,7 @@ static pj_status_t decode_uint_attr(pj_pool_t *pool,
/* Check that the attribute length is valid */
if (attr->hdr.length != STUN_UINT_LEN)
- return PJLIB_UTIL_ESTUNINATTRLEN;
+ return PJNATH_ESTUNINATTRLEN;
/* Done */
*p_attr = attr;
@@ -1088,7 +1088,7 @@ static pj_status_t decode_msgint_attr(pj_pool_t *pool,
/* Check that the attribute length is valid */
if (attr->hdr.length != STUN_MSG_INTEGRITY_LEN)
- return PJLIB_UTIL_ESTUNINATTRLEN;
+ return PJNATH_ESTUNINATTRLEN;
/* Done */
*p_attr = attr;
@@ -1563,18 +1563,18 @@ PJ_DEF(pj_status_t) pj_stun_msg_check(const pj_uint8_t *pdu, unsigned pdu_len,
PJ_ASSERT_RETURN(pdu, PJ_EINVAL);
if (pdu_len < sizeof(pj_stun_msg_hdr))
- return PJLIB_UTIL_ESTUNINMSGLEN;
+ return PJNATH_ESTUNINMSGLEN;
/* First byte of STUN message is always 0x00 or 0x01. */
if (*pdu != 0x00 && *pdu != 0x01)
- return PJLIB_UTIL_ESTUNINMSGTYPE;
+ return PJNATH_ESTUNINMSGTYPE;
/* Check the PDU length */
msg_len = GET_VAL16(pdu, 2);
if ((msg_len + 20 > pdu_len) ||
((options & PJ_STUN_IS_DATAGRAM) && msg_len + 20 != pdu_len))
{
- return PJLIB_UTIL_ESTUNINMSGLEN;
+ return PJNATH_ESTUNINMSGLEN;
}
/* If magic is set, then there is great possibility that this is
@@ -1589,13 +1589,13 @@ PJ_DEF(pj_status_t) pj_stun_msg_check(const pj_uint8_t *pdu, unsigned pdu_len,
pj_uint32_t crc;
if (attr_len != 4)
- return PJLIB_UTIL_ESTUNINATTRLEN;
+ return PJNATH_ESTUNINATTRLEN;
crc = pj_crc32_calc(pdu, msg_len + 20);
crc ^= STUN_XOR_FINGERPRINT;
if (crc != fingerprint)
- return PJLIB_UTIL_ESTUNFINGERPRINT;
+ return PJNATH_ESTUNFINGERPRINT;
}
}
@@ -1618,7 +1618,7 @@ PJ_DEF(pj_status_t) pj_stun_msg_create_response(pj_pool_t *pool,
PJ_ASSERT_RETURN(pool && p_response, PJ_EINVAL);
PJ_ASSERT_RETURN(PJ_STUN_IS_REQUEST(msg_type),
- PJLIB_UTIL_ESTUNINMSGTYPE);
+ PJNATH_ESTUNINMSGTYPE);
/* Create response or error response */
if (err_code)
@@ -1728,7 +1728,7 @@ PJ_DEF(pj_status_t) pj_stun_msg_decode(pj_pool_t *pool,
PJ_STUN_SC_BAD_REQUEST,
&err_msg, p_response);
}
- return PJLIB_UTIL_ESTUNINATTRLEN;
+ return PJNATH_ESTUNINATTRLEN;
}
/* Get the attribute descriptor */
@@ -1757,7 +1757,7 @@ PJ_DEF(pj_status_t) pj_stun_msg_decode(pj_pool_t *pool,
}
}
- return PJLIB_UTIL_ESTUNUNKNOWNATTR;
+ return PJNATH_ESTUNUNKNOWNATTR;
}
} else {
@@ -1805,7 +1805,7 @@ PJ_DEF(pj_status_t) pj_stun_msg_decode(pj_pool_t *pool,
PJ_STUN_SC_BAD_REQUEST,
NULL, p_response);
}
- return PJLIB_UTIL_ESTUNDUPATTR;
+ return PJNATH_ESTUNDUPATTR;
}
has_msg_int = PJ_TRUE;
@@ -1819,7 +1819,7 @@ PJ_DEF(pj_status_t) pj_stun_msg_decode(pj_pool_t *pool,
PJ_STUN_SC_BAD_REQUEST,
NULL, p_response);
}
- return PJLIB_UTIL_ESTUNDUPATTR;
+ return PJNATH_ESTUNDUPATTR;
}
has_fingerprint = PJ_TRUE;
} else {
@@ -1833,8 +1833,8 @@ PJ_DEF(pj_status_t) pj_stun_msg_decode(pj_pool_t *pool,
PJ_STUN_SC_BAD_REQUEST,
NULL, p_response);
}
- return has_fingerprint ? PJLIB_UTIL_ESTUNFINGERPOS :
- PJLIB_UTIL_ESTUNMSGINTPOS;
+ return has_fingerprint ? PJNATH_ESTUNFINGERPOS :
+ PJNATH_ESTUNMSGINTPOS;
}
}
@@ -1848,7 +1848,7 @@ PJ_DEF(pj_status_t) pj_stun_msg_decode(pj_pool_t *pool,
PJ_STUN_SC_BAD_REQUEST,
&e, p_response);
}
- return PJLIB_UTIL_ESTUNTOOMANYATTR;
+ return PJNATH_ESTUNTOOMANYATTR;
}
/* Add the attribute */
@@ -2027,12 +2027,12 @@ PJ_DEF(pj_status_t) pj_stun_msg_encode(pj_stun_msg *msg,
const pj_stun_attr_hdr *attr_hdr = msg->attr[i];
/* There mustn't any attribute after FINGERPRINT */
- PJ_ASSERT_RETURN(afingerprint == NULL, PJLIB_UTIL_ESTUNFINGERPOS);
+ PJ_ASSERT_RETURN(afingerprint == NULL, PJNATH_ESTUNFINGERPOS);
if (attr_hdr->type == PJ_STUN_ATTR_MESSAGE_INTEGRITY) {
/* There mustn't be MESSAGE-INTEGRITY before */
PJ_ASSERT_RETURN(amsgint == NULL,
- PJLIB_UTIL_ESTUNMSGINTPOS);
+ PJNATH_ESTUNMSGINTPOS);
amsgint = (pj_stun_msgint_attr*) attr_hdr;
} else if (attr_hdr->type == PJ_STUN_ATTR_FINGERPRINT) {
@@ -2070,13 +2070,13 @@ PJ_DEF(pj_status_t) pj_stun_msg_encode(pj_stun_msg *msg,
if (i < msg->attr_count-2) {
/* Should not happen for message generated by us */
pj_assert(PJ_FALSE);
- return PJLIB_UTIL_ESTUNMSGINTPOS;
+ return PJNATH_ESTUNMSGINTPOS;
} else if (i == msg->attr_count-2) {
if (msg->attr[i+1]->type != PJ_STUN_ATTR_FINGERPRINT) {
/* Should not happen for message generated by us */
pj_assert(PJ_FALSE);
- return PJLIB_UTIL_ESTUNMSGINTPOS;
+ return PJNATH_ESTUNMSGINTPOS;
} else {
afingerprint = (pj_stun_fingerprint_attr*) msg->attr[i+1];
}
@@ -2086,7 +2086,7 @@ PJ_DEF(pj_status_t) pj_stun_msg_encode(pj_stun_msg *msg,
if (auname == NULL) {
/* Should not happen for message generated by us */
pj_assert(PJ_FALSE);
- return PJLIB_UTIL_ESTUNNOUSERNAME;
+ return PJNATH_ESTUNNOUSERNAME;
}
/* Password must be specified */