Use dbus_free for deallocation, when allocated with dbus_malloc0
[platform/upstream/connman.git] / gdhcp / common.h
old mode 100644 (file)
new mode 100755 (executable)
index e2bfc6c..9660231
@@ -19,6 +19,7 @@
  *
  */
 
+#include <config.h>
 #include <netinet/udp.h>
 #include <netinet/ip.h>
 
@@ -170,6 +171,14 @@ static const uint8_t dhcp_option_lengths[] = {
        [OPTION_U32]    = 4,
 };
 
+/* already defined within netinet/in.h if using glibc or musl */
+#ifndef HAVE_STRUCT_IN6_PKTINFO_IPI6_ADDR
+struct in6_pktinfo {
+       struct in6_addr ipi6_addr;  /* src/dst IPv6 address */
+       unsigned int ipi6_ifindex;  /* send/recv interface index */
+};
+#endif
+
 uint8_t *dhcp_get_option(struct dhcp_packet *packet, int code);
 uint8_t *dhcpv6_get_option(struct dhcpv6_packet *packet, uint16_t pkt_len,
                        int code, uint16_t *option_len, int *option_count);
@@ -179,7 +188,11 @@ int dhcp_end_option(uint8_t *optionptr);
 void dhcp_add_binary_option(struct dhcp_packet *packet, uint8_t *addopt);
 void dhcpv6_add_binary_option(struct dhcpv6_packet *packet, uint16_t max_len,
                                uint16_t *pkt_len, uint8_t *addopt);
-void dhcp_add_simple_option(struct dhcp_packet *packet,
+void dhcp_add_option_uint8(struct dhcp_packet *packet,
+                               uint8_t code, uint8_t data);
+void dhcp_add_option_uint16(struct dhcp_packet *packet,
+                               uint8_t code, uint16_t data);
+void dhcp_add_option_uint32(struct dhcp_packet *packet,
                                uint8_t code, uint32_t data);
 GDHCPOptionType dhcp_get_code_type(uint8_t code);
 GDHCPOptionType dhcpv6_get_code_type(uint16_t code);
@@ -192,11 +205,13 @@ void dhcpv6_init_header(struct dhcpv6_packet *packet, uint8_t type);
 int dhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
                        uint32_t source_ip, int source_port,
                        uint32_t dest_ip, int dest_port,
-                       const uint8_t *dest_arp, int ifindex);
+                       const uint8_t *dest_arp, int ifindex,
+                       bool bcast);
 int dhcpv6_send_packet(int index, struct dhcpv6_packet *dhcp_pkt, int len);
 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);
 int dhcp_l3_socket(int port, const char *interface, int family);
 int dhcp_recv_l3_packet(struct dhcp_packet *packet, int fd);
 int dhcpv6_recv_l3_packet(struct dhcpv6_packet **packet, unsigned char *buf,
@@ -204,4 +219,4 @@ int dhcpv6_recv_l3_packet(struct dhcpv6_packet **packet, unsigned char *buf,
 int dhcp_l3_socket_send(int index, int port, int family);
 
 char *get_interface_name(int index);
-gboolean interface_is_up(int index);
+bool interface_is_up(int index);