Set a progname to send with our command.
[dhcpcd-ui] / src / libdhcpcd / dhcpcd.h
index f05e6dc2a236896141ef69ef981afa8dac851ba4..68f9a88eb1360d7cca647fd284dfb77b6613ee25 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"
@@ -47,7 +50,8 @@ extern "C" {
 #define DHCPCD_RETRYOPEN       100     /* milliseconds */
 #define DHCPCD_WI_HIST_MAX     10      /* Recall 10 scans for averages */
 
-#define IF_SSIDSIZE            33
+/* Each non printable byte of the SSID is represented as \000 */
+#define IF_SSIDSIZE            ((32 * 4) + 1)
 #define IF_BSSIDSIZE           64
 #define FLAGSIZE               64
 #define TYPESIZE               8
@@ -65,6 +69,7 @@ typedef struct dhcpcd_wi_scan {
        DHCPCD_WI_AV quality;
        DHCPCD_WI_AV noise;
        DHCPCD_WI_AV level;
+       DHCPCD_WI_AV strength;
        char ssid[IF_SSIDSIZE];
        char flags[FLAGSIZE];
 } DHCPCD_WI_SCAN;
@@ -116,6 +121,7 @@ typedef struct dhcpcd_wi_hist {
        int quality;
        int noise;
        int level;
+       int strength;
 } DHCPCD_WI_HIST;
 
 typedef struct dhcpcd_wpa {
@@ -133,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;
@@ -144,6 +152,7 @@ typedef struct dhcpcd_connection {
        void *if_context;
        void (*status_cb)(struct dhcpcd_connection *, const char *, void *);
        void *status_context;
+       bool wpa_started;
        void (*wi_scanresults_cb)(DHCPCD_WPA *, void *);
        void *wi_scanresults_context;
        void (*wpa_status_cb)(DHCPCD_WPA *, const char *, void *);
@@ -170,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 *,
@@ -181,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 *);
@@ -196,6 +208,7 @@ ssize_t dhcpcd_command_arg(DHCPCD_CONNECTION *, const char *, const char *,
 #define dhcpcd_rebind(c, i)    dhcpcd_command_arg((c), "-n", (i), NULL)
 #define dhcpcd_release(c, i)   dhcpcd_command_arg((c), "-k", (i), NULL)
 
+void dhcpcd_wpa_start(DHCPCD_CONNECTION *);
 DHCPCD_WPA *dhcpcd_wpa_find(DHCPCD_CONNECTION *, const char *);
 DHCPCD_WPA *dhcpcd_wpa_new(DHCPCD_CONNECTION *, const char *);
 DHCPCD_CONNECTION *dhcpcd_wpa_connection(DHCPCD_WPA *);
@@ -228,6 +241,15 @@ bool dhcpcd_wpa_network_remove(DHCPCD_WPA *, int);
 char * dhcpcd_wpa_network_get(DHCPCD_WPA *, int, const char *);
 bool dhcpcd_wpa_network_set(DHCPCD_WPA *, int, const char *, const char *);
 
+#define DHCPCD_WPA_SUCCESS      0
+#define DHCPCD_WPA_ERR         -1
+#define DHCPCD_WPA_ERR_SET     -2
+#define DHCPCD_WPA_ERR_SET_PSK -3
+#define DHCPCD_WPA_ERR_ENABLE  -4
+#define DHCPCD_WPA_ERR_WRITE   -5
+#define DHCPCD_WPA_ERR_ASSOC   -6
+int dhcpcd_wpa_configure_psk(DHCPCD_WPA *w, DHCPCD_WI_SCAN *s, const char *p);
+
 char ** dhcpcd_config_blocks(DHCPCD_CONNECTION *, const char *);
 DHCPCD_OPTION *dhcpcd_config_read(DHCPCD_CONNECTION *,
     const char *, const char *);
@@ -236,6 +258,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 *);