move some usefull functions needed by zeroconf
---
 gdhcp/client.c |   68 ----------------------------------------------------
 gdhcp/common.c |   72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 gdhcp/common.h |    4 +++
 3 files changed, 76 insertions(+), 68 deletions(-)

diff --git a/gdhcp/client.c b/gdhcp/client.c
index b9a0e7f..63af4b8 100644
--- a/gdhcp/client.c
+++ b/gdhcp/client.c
@@ -268,42 +268,6 @@ static int send_release(GDHCPClient *dhcp_client,
                                                server, SERVER_PORT);
 }

-static gboolean interface_is_up(int index)
-{
-       int sk, err;
-       struct ifreq ifr;
-       gboolean ret = FALSE;
-
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
-       if (sk < 0) {
-               perror("Open socket error");
-               return FALSE;
-       }
-
-       memset(&ifr, 0, sizeof(ifr));
-       ifr.ifr_ifindex = index;
-
-       err = ioctl(sk, SIOCGIFNAME, &ifr);
-       if (err < 0) {
-               perror("Get interface name error");
-               goto done;
-       }
-
-       err = ioctl(sk, SIOCGIFFLAGS, &ifr);
-       if (err < 0) {
-               perror("Get interface flags error");
-               goto done;
-       }
-
-       if (ifr.ifr_flags & IFF_UP)
-               ret = TRUE;
-
-done:
-       close(sk);
-
-       return ret;
-}
-
 static char *get_interface_name(int index)
 {
        struct ifreq ifr;
@@ -333,38 +297,6 @@ static char *get_interface_name(int index)
        return g_strdup(ifr.ifr_name);
 }

-static void get_interface_mac_address(int index, uint8_t *mac_address)
-{
-       struct ifreq ifr;
-       int sk, err;
-
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
-       if (sk < 0) {
-               perror("Open socket error");
-               return;
-       }
-
-       memset(&ifr, 0, sizeof(ifr));
-       ifr.ifr_ifindex = index;
-
-       err = ioctl(sk, SIOCGIFNAME, &ifr);
-       if (err < 0) {
-               perror("Get interface name error");
-               goto done;
-       }
-
-       err = ioctl(sk, SIOCGIFHWADDR, &ifr);
-       if (err < 0) {
-               perror("Get mac address error");
-               goto done;
-       }
-
-       memcpy(mac_address, ifr.ifr_hwaddr.sa_data, 6);
-
-done:
-       close(sk);
-}
-
 static void remove_value(gpointer data, gpointer user_data)
 {
        char *value = data;
diff --git a/gdhcp/common.c b/gdhcp/common.c
index fc95881..40b5f09 100644
--- a/gdhcp/common.c
+++ b/gdhcp/common.c
@@ -23,12 +23,15 @@
 #endif

 #include <errno.h>
+#include <stdio.h>
 #include <unistd.h>
+#include <sys/ioctl.h>
 #include <stdint.h>
 #include <string.h>
 #include <endian.h>
 #include <netpacket/packet.h>
 #include <net/ethernet.h>
+#include <net/if.h>

 #include "gdhcp.h"
 #include "common.h"
@@ -417,3 +420,72 @@ int dhcp_l3_socket(int port, const char *interface)

        return fd;
 }
+
+gboolean interface_is_up(int index)
+{
+       int sk, err;
+       struct ifreq ifr;
+       gboolean ret = FALSE;
+
+       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       if (sk < 0) {
+               perror("Open socket error");
+               return FALSE;
+       }
+
+       memset(&ifr, 0, sizeof(ifr));
+       ifr.ifr_ifindex = index;
+
+       err = ioctl(sk, SIOCGIFNAME, &ifr);
+       if (err < 0) {
+               perror("Get interface name error");
+               goto done;
+       }
+
+       err = ioctl(sk, SIOCGIFFLAGS, &ifr);
+       if (err < 0) {
+               perror("Get interface flags error");
+               goto done;
+       }
+
+       if (ifr.ifr_flags & IFF_UP)
+               ret = TRUE;
+
+done:
+       close(sk);
+
+       return ret;
+}
+
+void get_interface_mac_address(int index, uint8_t *mac_address)
+{
+       struct ifreq ifr;
+       int sk, err;
+
+       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       if (sk < 0) {
+               perror("Open socket error");
+               return;
+       }
+
+       memset(&ifr, 0, sizeof(ifr));
+       ifr.ifr_ifindex = index;
+
+       err = ioctl(sk, SIOCGIFNAME, &ifr);
+       if (err < 0) {
+               perror("Get interface name error");
+               goto done;
+       }
+
+       err = ioctl(sk, SIOCGIFHWADDR, &ifr);
+       if (err < 0) {
+               perror("Get mac address error");
+               goto done;
+       }
+
+       memcpy(mac_address, ifr.ifr_hwaddr.sa_data, 6);
+
+done:
+       close(sk);
+}
+
diff --git a/gdhcp/common.h b/gdhcp/common.h
index 5b6fe58..977879f 100644
--- a/gdhcp/common.h
+++ b/gdhcp/common.h
@@ -171,3 +171,7 @@ int dhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
                        uint32_t dest_ip, int dest_port);
 int dhcp_l3_socket(int port, const char *interface);
 int dhcp_recv_l3_packet(struct dhcp_packet *packet, int fd);
+
+void get_interface_mac_address(int index, uint8_t *mac_address);
+gboolean interface_is_up(int index);
+
--
1.7.1

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to