summaryrefslogtreecommitdiff
path: root/gdhcp/common.c
diff options
context:
space:
mode:
authorNiraj Kumar Goit <niraj.g@samsung.com>2020-12-01 18:14:19 +0530
committerNiraj Kumar Goit <niraj.g@samsung.com>2021-01-04 05:50:23 +0000
commitc647a4b6f1132684c9d8b8ad71ec38d81147b278 (patch)
treeb346bee32f204af1f3b13cfacb2ad3caa9a9c484 /gdhcp/common.c
parent04d1dbacf6aabbb44f16f6776496192964d460d8 (diff)
downloadconnman-c647a4b6f1132684c9d8b8ad71ec38d81147b278.tar.gz
connman-c647a4b6f1132684c9d8b8ad71ec38d81147b278.tar.bz2
connman-c647a4b6f1132684c9d8b8ad71ec38d81147b278.zip
Imported Upstream connman version 1.38
Change-Id: I9e650762f3b2b2a31945b66e044e67a77e3b4b12 Signed-off-by: Niraj Kumar Goit <niraj.g@samsung.com>
Diffstat (limited to 'gdhcp/common.c')
-rwxr-xr-xgdhcp/common.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gdhcp/common.c b/gdhcp/common.c
index 8f7a65cc..1d667d17 100755
--- a/gdhcp/common.c
+++ b/gdhcp/common.c
@@ -595,7 +595,8 @@ int dhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
int dhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
uint32_t source_ip, int source_port,
- uint32_t dest_ip, int dest_port)
+ uint32_t dest_ip, int dest_port,
+ const char *interface)
{
struct sockaddr_in client;
int fd, n, opt = 1;
@@ -609,6 +610,13 @@ int dhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
if (fd < 0)
return -errno;
+ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE,
+ interface, strlen(interface) + 1) < 0) {
+ int err = errno;
+ close(fd);
+ return -err;
+ }
+
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) {
int err = errno;
close(fd);