Ignore:
Timestamp:
Mar 18, 2007 5:39:27 PM (14 years ago)
Author:
bennylp
Message:

Changed pj_sockaddr structure and added pjnath project for ICE/STUN stuffs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjnath/src/pjnath/stun_msg.c

    r1062 r1080  
    1717 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  
    1818 */ 
    19 #include <pjlib-util/stun_msg.h> 
     19#include <pjnath/stun_msg.h> 
     20#include <pjnath/errno.h> 
    2021#include <pjlib-util/crc32.h> 
    21 #include <pjlib-util/errno.h> 
    2222#include <pjlib-util/hmac_sha1.h> 
    2323#include <pjlib-util/md5.h> 
     
    559559    INIT_ATTR(attr, attr_type, STUN_GENERIC_IP_ADDR_LEN); 
    560560 
    561     pj_memcpy(&attr->addr, addr, addr_len); 
     561    pj_memcpy(&attr->sockaddr, addr, addr_len); 
    562562    attr->xor_ed = xor_ed; 
    563563 
     
    607607    /* Check that the attribute length is valid */ 
    608608    if (attr->hdr.length != STUN_GENERIC_IP_ADDR_LEN) 
    609         return PJLIB_UTIL_ESTUNINATTRLEN; 
     609        return PJNATH_ESTUNINATTRLEN; 
    610610 
    611611    /* Check address family */ 
     
    614614    /* Check address family is valid (only supports ipv4 for now) */ 
    615615    if (val != 1) 
    616         return PJLIB_UTIL_ESTUNIPV6NOTSUPP; 
     616        return PJNATH_ESTUNIPV6NOTSUPP; 
    617617 
    618618    /* Get port and address */ 
    619     pj_sockaddr_in_init(&attr->addr.ipv4, NULL, 0); 
    620     pj_memcpy(&attr->addr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2); 
    621     pj_memcpy(&attr->addr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4); 
     619    pj_sockaddr_in_init(&attr->sockaddr.ipv4, NULL, 0); 
     620    pj_memcpy(&attr->sockaddr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2); 
     621    pj_memcpy(&attr->sockaddr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4); 
    622622 
    623623    /* Done */ 
     
    645645    /* Check that the attribute length is valid */ 
    646646    if (attr->hdr.length != STUN_GENERIC_IP_ADDR_LEN) 
    647         return PJLIB_UTIL_ESTUNINATTRLEN; 
     647        return PJNATH_ESTUNINATTRLEN; 
    648648 
    649649    /* Check address family */ 
     
    652652    /* Check address family is valid (only supports ipv4 for now) */ 
    653653    if (val != 1) 
    654         return PJLIB_UTIL_ESTUNIPV6NOTSUPP; 
     654        return PJNATH_ESTUNIPV6NOTSUPP; 
    655655 
    656656    /* Get port and address */ 
    657     pj_sockaddr_in_init(&attr->addr.ipv4, NULL, 0); 
    658     pj_memcpy(&attr->addr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2); 
    659     pj_memcpy(&attr->addr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4); 
    660  
    661     attr->addr.ipv4.sin_port ^= 0x2112; 
    662     attr->addr.ipv4.sin_addr.s_addr ^= pj_htonl(0x2112A442); 
     657    pj_sockaddr_in_init(&attr->sockaddr.ipv4, NULL, 0); 
     658    pj_memcpy(&attr->sockaddr.ipv4.sin_port, buf+ATTR_HDR_LEN+2, 2); 
     659    pj_memcpy(&attr->sockaddr.ipv4.sin_addr, buf+ATTR_HDR_LEN+4, 4); 
     660 
     661    attr->sockaddr.ipv4.sin_port ^= pj_htons(0x2112); 
     662    attr->sockaddr.ipv4.sin_addr.s_addr ^= pj_htonl(0x2112A442); 
    663663 
    664664    /* Done */ 
     
    694694 
    695695    /* Family (IPv4 only for now) */ 
    696     PJ_ASSERT_RETURN(ca->addr.addr.sa_family == PJ_AF_INET, PJ_EINVAL); 
     696    PJ_ASSERT_RETURN(ca->sockaddr.addr.sa_family == PJ_AF_INET, PJ_EINVAL); 
    697697    *buf++ = 1; 
    698698 
     
    701701        pj_uint16_t port; 
    702702 
    703         addr = ca->addr.ipv4.sin_addr.s_addr; 
    704         port = ca->addr.ipv4.sin_port; 
    705  
    706         port ^= 0x2112; 
     703        addr = ca->sockaddr.ipv4.sin_addr.s_addr; 
     704        port = ca->sockaddr.ipv4.sin_port; 
     705 
     706        port ^= pj_htons(0x2112); 
    707707        addr ^= pj_htonl(0x2112A442); 
    708708 
     
    717717    } else { 
    718718        /* Port */ 
    719         pj_memcpy(buf, &ca->addr.ipv4.sin_port, 2); 
     719        pj_memcpy(buf, &ca->sockaddr.ipv4.sin_port, 2); 
    720720        buf += 2; 
    721721 
    722722        /* Address */ 
    723         pj_memcpy(buf, &ca->addr.ipv4.sin_addr, 4); 
     723        pj_memcpy(buf, &ca->sockaddr.ipv4.sin_addr, 4); 
    724724        buf += 4; 
    725725    } 
     
    893893    /* Check that the attribute length is valid */ 
    894894    if (attr->hdr.length != ATTR_HDR_LEN) 
    895         return PJLIB_UTIL_ESTUNINATTRLEN; 
     895        return PJNATH_ESTUNINATTRLEN; 
    896896 
    897897    /* Done */ 
     
    993993    /* Check that the attribute length is valid */ 
    994994    if (attr->hdr.length != STUN_UINT_LEN) 
    995         return PJLIB_UTIL_ESTUNINATTRLEN; 
     995        return PJNATH_ESTUNINATTRLEN; 
    996996 
    997997    /* Done */ 
     
    10891089    /* Check that the attribute length is valid */ 
    10901090    if (attr->hdr.length != STUN_MSG_INTEGRITY_LEN) 
    1091         return PJLIB_UTIL_ESTUNINATTRLEN; 
     1091        return PJNATH_ESTUNINATTRLEN; 
    10921092 
    10931093    /* Done */ 
     
    15641564 
    15651565    if (pdu_len < sizeof(pj_stun_msg_hdr)) 
    1566         return PJLIB_UTIL_ESTUNINMSGLEN; 
     1566        return PJNATH_ESTUNINMSGLEN; 
    15671567 
    15681568    /* First byte of STUN message is always 0x00 or 0x01. */ 
    15691569    if (*pdu != 0x00 && *pdu != 0x01) 
    1570         return PJLIB_UTIL_ESTUNINMSGTYPE; 
     1570        return PJNATH_ESTUNINMSGTYPE; 
    15711571 
    15721572    /* Check the PDU length */ 
     
    15751575        ((options & PJ_STUN_IS_DATAGRAM) && msg_len + 20 != pdu_len)) 
    15761576    { 
    1577         return PJLIB_UTIL_ESTUNINMSGLEN; 
     1577        return PJNATH_ESTUNINMSGLEN; 
    15781578    } 
    15791579 
     
    15901590 
    15911591            if (attr_len != 4) 
    1592                 return PJLIB_UTIL_ESTUNINATTRLEN; 
     1592                return PJNATH_ESTUNINATTRLEN; 
    15931593 
    15941594            crc = pj_crc32_calc(pdu, msg_len + 20); 
     
    15961596 
    15971597            if (crc != fingerprint) 
    1598                 return PJLIB_UTIL_ESTUNFINGERPRINT; 
     1598                return PJNATH_ESTUNFINGERPRINT; 
    15991599        } 
    16001600    } 
     
    16191619 
    16201620    PJ_ASSERT_RETURN(PJ_STUN_IS_REQUEST(msg_type),  
    1621                      PJLIB_UTIL_ESTUNINMSGTYPE); 
     1621                     PJNATH_ESTUNINMSGTYPE); 
    16221622 
    16231623    /* Create response or error response */ 
     
    17291729                                            &err_msg, p_response); 
    17301730            } 
    1731             return PJLIB_UTIL_ESTUNINATTRLEN; 
     1731            return PJNATH_ESTUNINATTRLEN; 
    17321732        } 
    17331733 
     
    17581758                } 
    17591759 
    1760                 return PJLIB_UTIL_ESTUNUNKNOWNATTR; 
     1760                return PJNATH_ESTUNUNKNOWNATTR; 
    17611761            } 
    17621762 
     
    18061806                                                    NULL, p_response); 
    18071807                    } 
    1808                     return PJLIB_UTIL_ESTUNDUPATTR; 
     1808                    return PJNATH_ESTUNDUPATTR; 
    18091809                } 
    18101810                has_msg_int = PJ_TRUE; 
     
    18201820                                                    NULL, p_response); 
    18211821                    } 
    1822                     return PJLIB_UTIL_ESTUNDUPATTR; 
     1822                    return PJNATH_ESTUNDUPATTR; 
    18231823                } 
    18241824                has_fingerprint = PJ_TRUE; 
     
    18341834                                                    NULL, p_response); 
    18351835                    } 
    1836                     return has_fingerprint ? PJLIB_UTIL_ESTUNFINGERPOS : 
    1837                                              PJLIB_UTIL_ESTUNMSGINTPOS; 
     1836                    return has_fingerprint ? PJNATH_ESTUNFINGERPOS : 
     1837                                             PJNATH_ESTUNMSGINTPOS; 
    18381838                } 
    18391839            } 
     
    18491849                                                &e, p_response); 
    18501850                } 
    1851                 return PJLIB_UTIL_ESTUNTOOMANYATTR; 
     1851                return PJNATH_ESTUNTOOMANYATTR; 
    18521852            } 
    18531853 
     
    20282028 
    20292029        /* There mustn't any attribute after FINGERPRINT */ 
    2030         PJ_ASSERT_RETURN(afingerprint == NULL, PJLIB_UTIL_ESTUNFINGERPOS); 
     2030        PJ_ASSERT_RETURN(afingerprint == NULL, PJNATH_ESTUNFINGERPOS); 
    20312031 
    20322032        if (attr_hdr->type == PJ_STUN_ATTR_MESSAGE_INTEGRITY) { 
    20332033            /* There mustn't be MESSAGE-INTEGRITY before */ 
    20342034            PJ_ASSERT_RETURN(amsgint == NULL,  
    2035                              PJLIB_UTIL_ESTUNMSGINTPOS); 
     2035                             PJNATH_ESTUNMSGINTPOS); 
    20362036            amsgint = (pj_stun_msgint_attr*) attr_hdr; 
    20372037 
     
    20712071            /* Should not happen for message generated by us */ 
    20722072            pj_assert(PJ_FALSE); 
    2073             return PJLIB_UTIL_ESTUNMSGINTPOS; 
     2073            return PJNATH_ESTUNMSGINTPOS; 
    20742074 
    20752075        } else if (i == msg->attr_count-2)  { 
     
    20772077                /* Should not happen for message generated by us */ 
    20782078                pj_assert(PJ_FALSE); 
    2079                 return PJLIB_UTIL_ESTUNMSGINTPOS; 
     2079                return PJNATH_ESTUNMSGINTPOS; 
    20802080            } else { 
    20812081                afingerprint = (pj_stun_fingerprint_attr*) msg->attr[i+1]; 
     
    20872087            /* Should not happen for message generated by us */ 
    20882088            pj_assert(PJ_FALSE); 
    2089             return PJLIB_UTIL_ESTUNNOUSERNAME; 
     2089            return PJNATH_ESTUNNOUSERNAME; 
    20902090        } 
    20912091 
Note: See TracChangeset for help on using the changeset viewer.