get_value now expects variable names to always have a = as the separator.
[dhcpcd-ui] / src / libdhcpcd / dhcpcd.h
index 8c788e801e8d84f9a807952680c2c328c3c26200..fd738fe593bd9305b1d195df86dd053486ed1d45 100644 (file)
@@ -39,6 +39,9 @@ extern "C" {
 #ifndef DHCPCD_SOCKET
 #define DHCPCD_SOCKET          "/var/run/dhcpcd.sock"
 #endif
+#ifndef DHCPCD_UNPRIV_SOCKET
+#define DHCPCD_UNPRIV_SOCKET   "/var/run/dhcpcd.unpriv.sock"
+#endif
 
 #ifndef WPA_CTRL_DIR
 #define WPA_CTRL_DIR           "/var/run/wpa_supplicant"
@@ -81,7 +84,7 @@ typedef struct dhcpcd_if {
        unsigned int flags;
        bool up;
        bool wireless;
-       const char *ssid;
+       char ssid[IF_SSIDSIZE];
 
        char *data;
        size_t data_len;
@@ -100,7 +103,7 @@ typedef struct dhcpcd_if {
        int flags;
        bool up;
        bool wireless;
-       const char *ssid;
+       char ssid[IF_SSIDSIZE];
 } DHCPCD_IF;
 #endif
 
@@ -136,8 +139,10 @@ typedef struct dhcpcd_wpa {
 typedef struct dhcpcd_connection {
        struct dhcpcd_connection *next;
        bool open;
+       bool privileged;
        int command_fd;
        int listen_fd;
+       const char *progname;
 
        DHCPCD_IF *interfaces;
        DHCPCD_WPA *wpa;
@@ -174,10 +179,12 @@ typedef void *DHCPCD_CONNECTION;
 
 DHCPCD_CONNECTION * dhcpcd_new(void);
 const char * dhcpcd_version(DHCPCD_CONNECTION *);
+void dhcpcd_set_progname(DHCPCD_CONNECTION *, const char *);
+const char * dhcpcd_get_progname(const DHCPCD_CONNECTION *);
 const char * dhcpcd_status(DHCPCD_CONNECTION *);
 const char * dhcpcd_cffile(DHCPCD_CONNECTION *);
 bool dhcpcd_realloc(DHCPCD_CONNECTION *, size_t);
-int dhcpcd_open(DHCPCD_CONNECTION *);
+int dhcpcd_open(DHCPCD_CONNECTION *, bool priv);
 void dhcpcd_close(DHCPCD_CONNECTION *);
 void dhcpcd_free(DHCPCD_CONNECTION *);
 void dhcpcd_set_if_callback(DHCPCD_CONNECTION *,
@@ -185,6 +192,7 @@ void dhcpcd_set_if_callback(DHCPCD_CONNECTION *,
 void dhcpcd_set_status_callback(DHCPCD_CONNECTION *,
     void (*)(DHCPCD_CONNECTION *, const char *, void *), void *);
 int dhcpcd_get_fd(DHCPCD_CONNECTION *);
+bool dhcpcd_privileged(DHCPCD_CONNECTION *);
 void dhcpcd_dispatch(DHCPCD_CONNECTION *);
 DHCPCD_IF * dhcpcd_interfaces(DHCPCD_CONNECTION *);
 DHCPCD_IF * dhcpcd_get_if(DHCPCD_CONNECTION *, const char *, const char *);
@@ -192,6 +200,22 @@ DHCPCD_CONNECTION * dhcpcd_if_connection(DHCPCD_IF *);
 const char *dhcpcd_get_value(const DHCPCD_IF *, const char *);
 const char *dhcpcd_get_prefix_value(const DHCPCD_IF *, const char *,
     const char *);
+
+#ifdef IN_LIBDHCPCD
+#ifndef VIS_OCTAL
+#define VIS_OCTAL      0x0001
+#define VIS_CSTYLE     0x0002
+#endif
+/* These functions only exists if libc does not provide a working one */
+char *dhcpcd_svis(char *dst, int c, int flags, int nextc, const char *extra);
+char *dhcpcd_vis(char *dst, int c, int flags, int nextc);
+int dhcpcd_strnunvis(char *dst, size_t dlen, const char *src);
+#endif
+ssize_t dhcpcd_encode(char *dst, size_t dlen, const char *src, size_t slen);
+ssize_t dhcpcd_decode(char *dst, size_t dlen, const char *src);
+ssize_t dhcpcd_decode_shell(char *dst, size_t dlen, const char *src);
+ssize_t dhcpcd_decode_hex(char *dst, size_t dlen, const char *src);
+
 char * dhcpcd_if_message(DHCPCD_IF *i, bool *new_msg);
 
 ssize_t dhcpcd_command(DHCPCD_CONNECTION *, const char *, char **);
@@ -250,6 +274,7 @@ const char * dhcpcd_config_get(DHCPCD_OPTION *, const char *);
 const char * dhcpcd_config_get_static(DHCPCD_OPTION *, const char *);
 bool dhcpcd_config_set(DHCPCD_OPTION **, const char *, const char *);
 bool dhcpcd_config_set_static(DHCPCD_OPTION **, const char *, const char *);
+bool dhcpcd_config_writeable(DHCPCD_CONNECTION *con);
 bool dhcpcd_config_write(DHCPCD_CONNECTION *,
     const char *, const char *, const DHCPCD_OPTION *);