X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdhcp%2Fcommon.c;h=1d667d17308fb86f521cc8db9ed6d8c501f73a90;hb=c647a4b6f1132684c9d8b8ad71ec38d81147b278;hp=8f7a65cc4486067b815506295263480449ad3404;hpb=04d1dbacf6aabbb44f16f6776496192964d460d8;p=platform%2Fupstream%2Fconnman.git diff --git a/gdhcp/common.c b/gdhcp/common.c index 8f7a65c..1d667d1 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);