diff options
author | Benny Prijono <bennylp@teluu.com> | 2009-10-25 10:50:17 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2009-10-25 10:50:17 +0000 |
commit | 295cdeb355d07347f2ba1f4a66ae144fee5efbf7 (patch) | |
tree | 5fabe1cd9c76386575fe0daa61698e6c9f8af995 /pjlib/src/pj/sock_qos_bsd.c | |
parent | fdc0f2ecdb18b9176f87f55ee17f054ce107e8c7 (diff) |
More ticket #950 (QoS):
- fixed wrong DSCP field operation with sock_qos_bsd.c backend
- tested on Linux for SIP (UDP/TCP), UDP RTP/RTCP, and ICE
- renamed 801_1_P names to SO_PRIO
- changed a bit of doxygen documentation (the title etc)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2967 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pj/sock_qos_bsd.c')
-rw-r--r-- | pjlib/src/pj/sock_qos_bsd.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/pjlib/src/pj/sock_qos_bsd.c b/pjlib/src/pj/sock_qos_bsd.c index 32b2828e..fbd73358 100644 --- a/pjlib/src/pj/sock_qos_bsd.c +++ b/pjlib/src/pj/sock_qos_bsd.c @@ -41,7 +41,8 @@ PJ_DEF(pj_status_t) pj_sock_set_qos_params(pj_sock_t sock, /* Set TOS/DSCP */ if (param->flags & PJ_QOS_PARAM_HAS_DSCP) { - int val = param->dscp_val; + /* Value is dscp_val << 2 */ + int val = (param->dscp_val << 2); status = pj_sock_setsockopt(sock, pj_SOL_IP(), pj_IP_TOS(), &val, sizeof(val)); if (status != PJ_SUCCESS) { @@ -51,12 +52,12 @@ PJ_DEF(pj_status_t) pj_sock_set_qos_params(pj_sock_t sock, } /* Set SO_PRIORITY */ - if (param->flags & PJ_QOS_PARAM_HAS_802_1_P) { + if (param->flags & PJ_QOS_PARAM_HAS_SO_PRIO) { int val = param->so_prio; status = pj_sock_setsockopt(sock, pj_SOL_SOCKET(), pj_SO_PRIORITY(), &val, sizeof(val)); if (status != PJ_SUCCESS) { - param->flags &= ~(PJ_QOS_PARAM_HAS_802_1_P); + param->flags &= ~(PJ_QOS_PARAM_HAS_SO_PRIO); last_err = status; } } @@ -93,7 +94,7 @@ PJ_DEF(pj_status_t) pj_sock_get_qos_params(pj_sock_t sock, &val, &optlen); if (status == PJ_SUCCESS) { p_param->flags |= PJ_QOS_PARAM_HAS_DSCP; - p_param->dscp_val = (pj_uint8_t)val; + p_param->dscp_val = (pj_uint8_t)(val >> 2); } else { last_err = status; } @@ -103,7 +104,7 @@ PJ_DEF(pj_status_t) pj_sock_get_qos_params(pj_sock_t sock, status = pj_sock_getsockopt(sock, pj_SOL_SOCKET(), pj_SO_PRIORITY(), &val, &optlen); if (status == PJ_SUCCESS) { - p_param->flags |= PJ_QOS_PARAM_HAS_802_1_P; + p_param->flags |= PJ_QOS_PARAM_HAS_SO_PRIO; p_param->so_prio = (pj_uint8_t)val; } else { last_err = status; @@ -128,3 +129,4 @@ PJ_DEF(pj_status_t) pj_sock_get_qos_type(pj_sock_t sock, } #endif /* PJ_QOS_IMPLEMENTATION */ + |