RTP add vlan set.
Change-Id: Ia0b72f2d21759b932f5737e694a5badcc0e9cffc
diff --git a/mbtk/mbtk_rtpd/src/rtp_server.c b/mbtk/mbtk_rtpd/src/rtp_server.c
index 4ae8a74..155ade2 100755
--- a/mbtk/mbtk_rtpd/src/rtp_server.c
+++ b/mbtk/mbtk_rtpd/src/rtp_server.c
@@ -41,6 +41,7 @@
#include "mbtk_utils.h"
#include "mbtk_audio2.h"
#include "mbtk_rtp_internal.h"
+#include "mbtk_ifc.h"
#define RTP_DEBUG_PCM_FILE 1
#define RTP_UDP_READ_BUFF_SIZE 2048
@@ -375,6 +376,26 @@
return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
}
+int ip_get_from_dev(const char *dev_name, void *addr)
+{
+ int ret = 0;
+ if(mbtk_ifc_open()) {
+ LOGE("mbtk_ifc_open() fail.");
+ ret = -1;
+ goto return_result;
+ }
+
+ if(mbtk_ifc_get_addr(dev_name, addr)) {
+ LOGE("mbtk_ifc_get_addr() fail.");
+ ret = -1;
+ goto return_result;
+ }
+
+return_result:
+ mbtk_ifc_close();
+ return ret;
+}
+
static void voip_playback_thread(void *arg)
{
UNUSED(arg);
@@ -522,18 +543,36 @@
return -1;
}
-static int rtp_udp_cli_open(const char *remote_addr, int remote_port)
+static int rtp_udp_cli_open(const char *vlan, const char *remote_addr, int remote_port)
{
- struct sockaddr_in dst_sa4, src_sa4;
- if (inet_pton(AF_INET, "0.0.0.0", &src_sa4.sin_addr) > 0) {
- src_sa4.sin_family = AF_INET;
- src_sa4.sin_port = htons(0);
- memset(&src_sa4.sin_zero, 0, sizeof(src_sa4.sin_zero));
- } else {
- LOGE("Set src addr fail.");
+ int fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if(fd < 0){
+ LOGE("socket() fail.[%d]", errno);
return -1;
}
+#if 0
+ struct sockaddr_in src_sa4;
+ memset(&src_sa4, 0, sizeof(src_sa4));
+ src_sa4.sin_family = AF_INET;
+ src_sa4.sin_port = htons(0);
+ src_sa4.sin_addr.s_addr = inet_addr("127.0.0.1");
+
+ if (bind(fd, (struct sockaddr*) &src_sa4, sizeof(src_sa4)) < 0) {
+ LOGE("bind() failed: %d", errno);
+ goto result_fail_with_close;
+ }
+#else
+ if(strlen(vlan) > 0) {
+ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE,
+ vlan, strlen(vlan)) < 0) {
+ LOGE("setsockopt(SO_BINDTODEVICE) failed");
+ return -1;
+ }
+ }
+#endif
+
+ struct sockaddr_in dst_sa4;
if (inet_pton(AF_INET, remote_addr, &dst_sa4.sin_addr) > 0) {
dst_sa4.sin_family = AF_INET;
dst_sa4.sin_port = htons(remote_port);
@@ -543,17 +582,6 @@
return -1;
}
- int fd = socket(AF_INET, SOCK_DGRAM, 0);
- if(fd < 0){
- LOGE("socket() fail.[%d]", errno);
- return -1;
- }
-
- if (bind(fd, (struct sockaddr*) &src_sa4, sizeof(src_sa4)) < 0) {
- LOGE("bind() failed: %d", errno);
- goto result_fail_with_close;
- }
-
if (connect(fd, (struct sockaddr*) &dst_sa4, sizeof(dst_sa4)) < 0) {
LOGE("connect() failed: %d", errno);
goto result_fail_with_close;
@@ -726,7 +754,7 @@
}
LOGD("Start open UDP client : %s-%d", conf_info->remote_ip, conf_info->server_port);
- rtp_info.udp_send_sock.fd = rtp_udp_cli_open(conf_info->remote_ip, conf_info->server_port);
+ rtp_info.udp_send_sock.fd = rtp_udp_cli_open(conf_info->vlan, conf_info->remote_ip, conf_info->server_port);
if(rtp_info.udp_send_sock.fd < 0) {
LOGE("Can not connected to %s:%d [errno-%d].", conf_info->remote_ip, conf_info->server_port, errno);
goto error;