summaryrefslogtreecommitdiff
path: root/pjlib
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-02-01 00:33:12 +0000
committerBenny Prijono <bennylp@teluu.com>2007-02-01 00:33:12 +0000
commit4c9fbd14de1ea36c638df692c1b1fd235c106d25 (patch)
tree88d2917ad3c733f6ec833aed263ee6ed86c6d010 /pjlib
parent902ccf97f5c4ceccbcc8f5d5d6f71cf09aaa6eba (diff)
Implement ticket #83: socket TOS abstraction
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@920 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib')
-rw-r--r--pjlib/include/pj/compat/os_auto.h.in1
-rw-r--r--pjlib/include/pj/compat/socket.h5
-rw-r--r--pjlib/include/pj/sock.h24
-rw-r--r--pjlib/src/pj/sock_bsd.c33
4 files changed, 62 insertions, 1 deletions
diff --git a/pjlib/include/pj/compat/os_auto.h.in b/pjlib/include/pj/compat/os_auto.h.in
index 51481388..b1292373 100644
--- a/pjlib/include/pj/compat/os_auto.h.in
+++ b/pjlib/include/pj/compat/os_auto.h.in
@@ -50,6 +50,7 @@
#undef PJ_HAS_MALLOC_H
#undef PJ_HAS_NETDB_H
#undef PJ_HAS_NETINET_IN_H
+#undef PJ_HAS_NETINET_IP_H
#undef PJ_HAS_SETJMP_H
#undef PJ_HAS_STDARG_H
#undef PJ_HAS_STDDEF_H
diff --git a/pjlib/include/pj/compat/socket.h b/pjlib/include/pj/compat/socket.h
index e95bc125..e64afe8f 100644
--- a/pjlib/include/pj/compat/socket.h
+++ b/pjlib/include/pj/compat/socket.h
@@ -52,6 +52,11 @@
# include <netinet/in.h>
#endif
+#if defined(PJ_HAS_NETINET_IP_H) && PJ_HAS_NETINET_IP_H != 0
+/* To pull in IPTOS_* constants */
+# include <netinet/ip.h>
+#endif
+
#if defined(PJ_HAS_ARPA_INET_H) && PJ_HAS_ARPA_INET_H != 0
# include <arpa/inet.h>
#endif
diff --git a/pjlib/include/pj/sock.h b/pjlib/include/pj/sock.h
index 7321c5de..80d2ab7d 100644
--- a/pjlib/include/pj/sock.h
+++ b/pjlib/include/pj/sock.h
@@ -93,6 +93,30 @@ extern const pj_uint16_t PJ_SOL_TCP; /**< TCP level. */
extern const pj_uint16_t PJ_SOL_UDP; /**< UDP level. */
extern const pj_uint16_t PJ_SOL_IPV6; /**< IP version 6 */
+
+/* IP_TOS
+ *
+ * Note:
+ * TOS CURRENTLY DOES NOT WORK IN Windows 2000 and above!
+ * See http://support.microsoft.com/kb/248611
+ */
+extern const pj_uint16_t PJ_IP_TOS; /**< IP_TOS optname in setsockopt() */
+
+
+/*
+ * IP TOS related constats.
+ *
+ * Note:
+ * TOS CURRENTLY DOES NOT WORK IN Windows 2000 and above!
+ * See http://support.microsoft.com/kb/248611
+ */
+extern const pj_uint16_t PJ_IPTOS_LOWDELAY; /**< Minimize delays */
+extern const pj_uint16_t PJ_IPTOS_THROUGHPUT; /**< Optimize throughput */
+extern const pj_uint16_t PJ_IPTOS_RELIABILITY; /**< Optimize for reliability*/
+extern const pj_uint16_t PJ_IPTOS_MINCOST; /**< "filler data" where slow
+ transmission does't matter */
+
+
/**
* Values to be specified as \c optname when calling #pj_sock_setsockopt()
* or #pj_sock_getsockopt().
diff --git a/pjlib/src/pj/sock_bsd.c b/pjlib/src/pj/sock_bsd.c
index 61745308..e75ea776 100644
--- a/pjlib/src/pj/sock_bsd.c
+++ b/pjlib/src/pj/sock_bsd.c
@@ -46,7 +46,7 @@ const pj_uint16_t PJ_AF_IRDA = 0xFFFF;
* Socket types conversion.
* The values here are indexed based on pj_sock_type
*/
-const pj_uint16_t PJ_SOCK_STREAM = SOCK_STREAM;
+const pj_uint16_t PJ_SOCK_STREAM= SOCK_STREAM;
const pj_uint16_t PJ_SOCK_DGRAM = SOCK_DGRAM;
const pj_uint16_t PJ_SOCK_RAW = SOCK_RAW;
const pj_uint16_t PJ_SOCK_RDM = SOCK_RDM;
@@ -76,6 +76,37 @@ const pj_uint16_t PJ_SOL_IPV6 = SOL_IPV6;
const pj_uint16_t PJ_SOL_IPV6 = 0xFFFF;
#endif
+/* IP_TOS */
+#ifdef IP_TOS
+const pj_uint16_t PJ_IP_TOS = IP_TOS;
+#else
+const pj_uint16_t PJ_IP_TOS = 1;
+#endif
+
+
+/* TOS settings (declared in netinet/ip.h) */
+#ifdef IPTOS_LOWDELAY
+const pj_uint16_t PJ_IPTOS_LOWDELAY = IPTOS_LOWDELAY;
+#else
+const pj_uint16_t PJ_IPTOS_LOWDELAY = 0x10;
+#endif
+#ifdef IPTOS_THROUGHPUT
+const pj_uint16_t PJ_IPTOS_THROUGHPUT = IPTOS_THROUGHPUT;
+#else
+const pj_uint16_t PJ_IPTOS_THROUGHPUT = 0x08;
+#endif
+#ifdef IPTOS_RELIABILITY
+const pj_uint16_t PJ_IPTOS_RELIABILITY = IPTOS_RELIABILITY;
+#else
+const pj_uint16_t PJ_IPTOS_RELIABILITY = 0x04;
+#endif
+#ifdef IPTOS_MINCOST
+const pj_uint16_t PJ_IPTOS_MINCOST = IPTOS_MINCOST;
+#else
+const pj_uint16_t PJ_IPTOS_MINCOST = 0x02;
+#endif
+
+
/* optname values. */
const pj_uint16_t PJ_SO_TYPE = SO_TYPE;
const pj_uint16_t PJ_SO_RCVBUF = SO_RCVBUF;