diff --git a/inc/libft_network.h b/inc/libft_network.h index 8154da6..db0363c 100644 --- a/inc/libft_network.h +++ b/inc/libft_network.h @@ -6,13 +6,14 @@ /* By: brda-sil + +t_int4 get_dns_nameserver(void) +{ + int fd; + char* line; + char** splitted; + t_int4 ip; + + fd = open("/etc/resolv.conf", O_RDONLY); + if (fd < 0) + return (0); + while (TRUE) + { + line = ft_get_next_line(fd); + if (!line) + { + free(line); + break ; + } + else if (ft_strncmp(line, "nameserver", 10)) + { + free(line); + continue ; + } + break; + } + ft_get_next_line(-2); + close(fd); + splitted = ft_split(line, ' '); + free(line); + splitted[1][ft_strlen(splitted[1]) - 1] = '\0'; + ip = ft_ipstr(splitted[1]); + ft_free_char_pp(splitted); + ip = ip? ip: DNS_DEFAULT_ADDR; + return (ft_htonl(ip)); +} diff --git a/src/network/ipv4/htoi4_socket/init_packet.c b/src/network/ipv4/htoi4_socket/init_packet.c index ba56be0..c90c3f8 100644 --- a/src/network/ipv4/htoi4_socket/init_packet.c +++ b/src/network/ipv4/htoi4_socket/init_packet.c @@ -6,7 +6,7 @@ /* By: brda-sil fragment_off = ft_htons(ft_pkt_fragment_offset(IPHDR_F_DONT_FRAG, 0)); pkt_ip->ttl = DNS_TTL; pkt_ip->protocol = IPPROTO_UDP; - pkt_ip->dst_addr = ft_htonl(DNS_ADDR); + pkt_ip->dst_addr = get_dns_nameserver(); pkt_udp = ft_pkt_get_udp(&pkt); pkt_udp->src_port = ft_htons(DNS_SRC_PORT); pkt_udp->dst_port = ft_htons(DNS_DST_PORT); diff --git a/src/network/ipv4/htoi4_socket/init_socket.c b/src/network/ipv4/htoi4_socket/init_socket.c index 863dc11..79afd0e 100644 --- a/src/network/ipv4/htoi4_socket/init_socket.c +++ b/src/network/ipv4/htoi4_socket/init_socket.c @@ -6,7 +6,7 @@ /* By: brda-sil dst_addr); ret = sendto( socket, pkt.data, diff --git a/src/network/ipv4/i4toh_socket/init_packet.c b/src/network/ipv4/i4toh_socket/init_packet.c index 0a4f0c2..16c295b 100644 --- a/src/network/ipv4/i4toh_socket/init_packet.c +++ b/src/network/ipv4/i4toh_socket/init_packet.c @@ -6,7 +6,7 @@ /* By: brda-sil fragment_off = ft_htons(ft_pkt_fragment_offset(IPHDR_F_DONT_FRAG, 0)); pkt_ip->ttl = DNS_TTL; pkt_ip->protocol = IPPROTO_UDP; - pkt_ip->dst_addr = ft_htonl(DNS_ADDR); + pkt_ip->dst_addr = get_dns_nameserver(); pkt_udp = ft_pkt_get_udp(&pkt); pkt_udp->src_port = ft_htons(DNS_SRC_PORT); pkt_udp->dst_port = ft_htons(DNS_DST_PORT); diff --git a/src/network/ipv4/i4toh_socket/init_socket.c b/src/network/ipv4/i4toh_socket/init_socket.c index 9810051..6dc6eb3 100644 --- a/src/network/ipv4/i4toh_socket/init_socket.c +++ b/src/network/ipv4/i4toh_socket/init_socket.c @@ -6,7 +6,7 @@ /* By: brda-sil dst_addr); ret = sendto( socket, pkt.data, diff --git a/src/network/socket/ft_socket.c b/src/network/socket/ft_socket.c new file mode 100644 index 0000000..f6807ff --- /dev/null +++ b/src/network/socket/ft_socket.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_socket.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: brda-sil parse_index++; } + atexit(ft_free_opts); } diff --git a/test/src/htoi4.c b/test/src/htoi4.c index 7dd9dbc..9abbd49 100644 --- a/test/src/htoi4.c +++ b/test/src/htoi4.c @@ -6,7 +6,7 @@ /* By: brda-sil