From c0f3393d4ab923e2eedab0fad88a864e2aae9fc9 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Mon, 17 Aug 2009 04:29:47 -0400 Subject: Fix reconnection code Remove redundant reconnection code that was interfeering with the sbus reconnection code. Consolidate include files for sbus relates operations. Make pamsrv code similar to nsssrv code. --- server/Makefile.am | 1 - server/monitor/monitor_interfaces.h | 10 +++ server/monitor/monitor_sbus.c | 1 - server/monitor/monitor_sbus.h | 34 ------- server/providers/data_provider.c | 5 +- server/providers/data_provider.h | 16 +++- server/providers/data_provider_be.c | 2 - server/providers/dp_sbus.c | 1 - server/providers/dp_sbus.h | 28 ------ server/responder/common/responder.h | 5 -- server/responder/common/responder_common.c | 36 +++++++- server/responder/common/responder_dp.c | 139 ----------------------------- server/responder/nss/nsssrv.c | 40 +++++---- server/responder/pam/pamsrv.c | 100 +++++++++++---------- server/responder/pam/pamsrv.h | 2 +- server/responder/pam/pamsrv_cmd.c | 2 +- server/responder/pam/pamsrv_dp.c | 1 - 17 files changed, 141 insertions(+), 282 deletions(-) delete mode 100644 server/monitor/monitor_sbus.h delete mode 100644 server/providers/dp_sbus.h diff --git a/server/Makefile.am b/server/Makefile.am index 8b552558f..ac8f3a5f5 100644 --- a/server/Makefile.am +++ b/server/Makefile.am @@ -211,7 +211,6 @@ dist_noinst_HEADERS = \ confdb/confdb_private.h \ confdb/confdb_setup.h \ providers/data_provider.h \ - providers/dp_sbus.h \ providers/dp_interfaces.h \ providers/dp_backend.h \ providers/providers.h \ diff --git a/server/monitor/monitor_interfaces.h b/server/monitor/monitor_interfaces.h index 211c25dd2..7d0390bfd 100644 --- a/server/monitor/monitor_interfaces.h +++ b/server/monitor/monitor_interfaces.h @@ -43,3 +43,13 @@ #define MON_CLI_METHOD_RES_INIT "resInit" #define SSSD_SERVICE_PIPE "private/sbus-monitor" + +int monitor_get_sbus_address(TALLOC_CTX *mem_ctx, struct confdb_ctx *confdb, + char **address); +int monitor_common_send_id(struct sbus_connection *conn, + const char *name, uint16_t version); +int monitor_common_pong(DBusMessage *message, + struct sbus_connection *conn); +int monitor_common_res_init(DBusMessage *message, + struct sbus_connection *conn); + diff --git a/server/monitor/monitor_sbus.c b/server/monitor/monitor_sbus.c index 777a47fed..9995986b8 100644 --- a/server/monitor/monitor_sbus.c +++ b/server/monitor/monitor_sbus.c @@ -27,7 +27,6 @@ #include "util/util.h" #include "confdb/confdb.h" #include "sbus/sssd_dbus.h" -#include "monitor/monitor_sbus.h" #include "monitor/monitor_interfaces.h" int monitor_get_sbus_address(TALLOC_CTX *mem_ctx, struct confdb_ctx *confdb, char **address) diff --git a/server/monitor/monitor_sbus.h b/server/monitor/monitor_sbus.h deleted file mode 100644 index d84954bd1..000000000 --- a/server/monitor/monitor_sbus.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - SSSD - - Data Provider Helpers - - Copyright (C) Stephen Gallagher 2009 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef MONITOR_SBUS_H_ -#define MONITOR_SBUS_H_ - -int monitor_get_sbus_address(TALLOC_CTX *mem_ctx, struct confdb_ctx *confdb, - char **address); -int monitor_common_send_id(struct sbus_connection *conn, - const char *name, uint16_t version); -int monitor_common_pong(DBusMessage *message, - struct sbus_connection *conn); -int monitor_common_res_init(DBusMessage *message, - struct sbus_connection *conn); - -#endif /* MONITOR_SBUS_H_ */ diff --git a/server/providers/data_provider.c b/server/providers/data_provider.c index 278f33be3..4cb39bfb6 100644 --- a/server/providers/data_provider.c +++ b/server/providers/data_provider.c @@ -39,7 +39,6 @@ #include "util/btreemap.h" #include "data_provider.h" #include "dp_interfaces.h" -#include "monitor/monitor_sbus.h" #include "monitor/monitor_interfaces.h" #define DP_CONF_ENTRY "config/services/dp" @@ -183,7 +182,7 @@ static void init_timeout(struct tevent_context *ev, { struct dp_client *dpcli; - DEBUG(2, ("Client timed out before Identification!\n")); + DEBUG(2, ("Client timed out before Identification [%p]!\n", te)); dpcli = talloc_get_type(ptr, struct dp_client); @@ -222,6 +221,7 @@ static int dp_client_init(struct sbus_connection *conn, void *data) talloc_zfree(conn); return ENOMEM; } + DEBUG(4, ("Set-up DP ID timeout [%p]\n", dpcli->timeout)); /* Attach the client context to the connection context, so that it is * always available when we need to manage the connection. */ @@ -254,6 +254,7 @@ static int client_registration(DBusMessage *message, } /* First thing, cancel the timeout */ + DEBUG(4, ("Cancel DP ID timeout [%p]\n", dpcli->timeout)); talloc_zfree(dpcli->timeout); dbus_error_init(&dbus_error); diff --git a/server/providers/data_provider.h b/server/providers/data_provider.h index 9c93bfec5..91adecba7 100644 --- a/server/providers/data_provider.h +++ b/server/providers/data_provider.h @@ -121,19 +121,27 @@ struct pam_data { gid_t gr_gid; }; +/* from dp_auth_util.c */ void pam_print_data(int l, struct pam_data *pd); - -int pam_add_response(struct pam_data *pd, enum response_type type, +int pam_add_response(struct pam_data *pd, + enum response_type type, int len, const uint8_t *data); bool dp_pack_pam_request(DBusMessage *msg, struct pam_data *pd); -bool dp_unpack_pam_request(DBusMessage *msg, struct pam_data *pd, DBusError *dbus_error); +bool dp_unpack_pam_request(DBusMessage *msg, struct pam_data *pd, + DBusError *dbus_error); + bool dp_pack_pam_response(DBusMessage *msg, struct pam_data *pd); -bool dp_unpack_pam_response(DBusMessage *msg, struct pam_data *pd, DBusError *dbus_error); +bool dp_unpack_pam_response(DBusMessage *msg, struct pam_data *pd, + DBusError *dbus_error); int dp_common_send_id(struct sbus_connection *conn, uint16_t cli_type, uint16_t version, const char *name, const char *domain); +/* from dp_sbus.c */ +int dp_get_sbus_address(TALLOC_CTX *mem_ctx, struct confdb_ctx *confdb, + char **address); + #endif /* __DATA_PROVIDER_ */ diff --git a/server/providers/data_provider_be.c b/server/providers/data_provider_be.c index 24d9105ef..7df900201 100644 --- a/server/providers/data_provider_be.c +++ b/server/providers/data_provider_be.c @@ -42,8 +42,6 @@ #include "sbus/sssd_dbus.h" #include "util/btreemap.h" #include "providers/dp_backend.h" -#include "providers/dp_sbus.h" -#include "monitor/monitor_sbus.h" #include "monitor/monitor_interfaces.h" #define BE_CONF_ENTRY "config/domains/%s" diff --git a/server/providers/dp_sbus.c b/server/providers/dp_sbus.c index f34822d5a..c5ccdc9aa 100644 --- a/server/providers/dp_sbus.c +++ b/server/providers/dp_sbus.c @@ -25,7 +25,6 @@ #include "confdb/confdb.h" #include "sbus/sssd_dbus.h" #include "providers/data_provider.h" -#include "providers/dp_sbus.h" #include "providers/dp_interfaces.h" int dp_get_sbus_address(TALLOC_CTX *mem_ctx, struct confdb_ctx *confdb, char **address) diff --git a/server/providers/dp_sbus.h b/server/providers/dp_sbus.h deleted file mode 100644 index f3f542239..000000000 --- a/server/providers/dp_sbus.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - SSSD - - Data Provider Helpers - - Copyright (C) Stephen Gallagher 2009 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef DP_SBUS_H_ -#define DP_SBUS_H_ - -int dp_get_sbus_address(TALLOC_CTX *mem_ctx, struct confdb_ctx *confdb, - char **address); - -#endif /* DP_SBUS_H_ */ diff --git a/server/responder/common/responder.h b/server/responder/common/responder.h index 5510bf200..59a58a5c5 100644 --- a/server/responder/common/responder.h +++ b/server/responder/common/responder.h @@ -123,11 +123,6 @@ void sss_cmd_done(struct cli_ctx *cctx, void *freectx); int sss_cmd_get_version(struct cli_ctx *cctx); struct cli_protocol_version *register_cli_protocol_version(void); -/* responder_dp.c */ -int sss_dp_init(struct resp_ctx *rctx, struct sbus_interface *intf, - uint16_t cli_type, uint16_t cli_version, - const char *cli_name, const char *cli_domain); - #define SSS_DP_USER 1 #define SSS_DP_GROUP 2 #define SSS_DP_INITGROUPS 3 diff --git a/server/responder/common/responder_common.c b/server/responder/common/responder_common.c index cf06c3ca1..f1030c04e 100644 --- a/server/responder/common/responder_common.c +++ b/server/responder/common/responder_common.c @@ -39,7 +39,6 @@ #include "responder/common/responder.h" #include "responder/common/responder_packet.h" #include "providers/data_provider.h" -#include "monitor/monitor_sbus.h" #include "monitor/monitor_interfaces.h" #include "sbus/sbus_client.h" @@ -318,6 +317,41 @@ static int sss_monitor_init(struct resp_ctx *rctx, return EOK; } +static int sss_dp_init(struct resp_ctx *rctx, + struct sbus_interface *intf, + uint16_t cli_type, uint16_t cli_version, + const char *cli_name, const char *cli_domain) +{ + char *sbus_address; + int ret; + + /* Set up SBUS connection to the monitor */ + ret = dp_get_sbus_address(rctx, rctx->cdb, &sbus_address); + if (ret != EOK) { + DEBUG(0, ("Could not locate DP address.\n")); + return ret; + } + + ret = sbus_client_init(rctx, rctx->ev, sbus_address, + intf, &rctx->dp_conn, + NULL, NULL); + if (ret != EOK) { + DEBUG(0, ("Failed to connect to monitor services.\n")); + return ret; + } + + /* Identify ourselves to the DP */ + ret = dp_common_send_id(rctx->dp_conn, + cli_type, cli_version, + cli_name, cli_domain); + if (ret != EOK) { + DEBUG(0, ("Failed to identify to the DP!\n")); + return ret; + } + + return EOK; +} + /* create a unix socket and listen to it */ static int set_unix_socket(struct resp_ctx *rctx) { diff --git a/server/responder/common/responder_dp.c b/server/responder/common/responder_dp.c index 163dadf4a..076b15432 100644 --- a/server/responder/common/responder_dp.c +++ b/server/responder/common/responder_dp.c @@ -6,148 +6,9 @@ #include "responder/common/responder.h" #include "providers/data_provider.h" #include "sbus/sbus_client.h" -#include "providers/dp_sbus.h" - -struct sss_dp_pvt_ctx { - struct resp_ctx *rctx; - struct sbus_interface *intf; - - uint16_t cli_type; - uint16_t cli_version; - const char *cli_name; - const char *cli_domain; - - time_t last_retry; - int retries; -}; hash_table_t *dp_requests = NULL; -static int sss_dp_conn_destructor(void *data); -static void sss_dp_reconnect(struct tevent_context *ev, - struct tevent_timer *te, - struct timeval tv, void *data); - -static void sss_dp_conn_reconnect(struct sss_dp_pvt_ctx *pvt) -{ - struct resp_ctx *rctx; - struct tevent_timer *te; - struct timeval tv; - char *sbus_address; - time_t now; - int ret; - - now = time(NULL); - - /* reset retry if last reconnect was > 60 sec. ago */ - if (pvt->last_retry + 60 < now) pvt->retries = 0; - if (pvt->retries >= 3) { - DEBUG(4, ("Too many reconnect retries! Giving up\n")); - return; - } - - pvt->last_retry = now; - pvt->retries++; - - rctx = pvt->rctx; - - ret = dp_get_sbus_address(rctx, rctx->cdb, &sbus_address); - if (ret != EOK) { - DEBUG(0, ("Could not locate data provider address.\n")); - return; - } - - ret = sbus_client_init(rctx, rctx->ev, sbus_address, - pvt->intf, &rctx->dp_conn, - sss_dp_conn_destructor, pvt); - - if (ret == EOK) { - /* Identify ourselves to the data provider */ - ret = dp_common_send_id(rctx->dp_conn, - pvt->cli_type, pvt->cli_version, - pvt->cli_name, pvt->cli_domain); - if (ret != EOK) { - DEBUG(0, ("Failed to identify to the data provider!\n")); - } - } - - if (ret != EOK) { - DEBUG(4, ("Failed to reconnect [%d(%s)]!\n", ret, strerror(ret))); - - tv.tv_sec = now +5; - tv.tv_usec = 0; - te = tevent_add_timer(rctx->ev, rctx, tv, sss_dp_reconnect, pvt); - if (te == NULL) { - DEBUG(4, ("Failed to add timed event! Giving up\n")); - } else { - DEBUG(4, ("Retrying in 5 seconds\n")); - } - } -} - -static void sss_dp_reconnect(struct tevent_context *ev, - struct tevent_timer *te, - struct timeval tv, void *data) -{ - struct sss_dp_pvt_ctx *pvt; - - pvt = talloc_get_type(data, struct sss_dp_pvt_ctx); - - sss_dp_conn_reconnect(pvt); -} - -int sss_dp_conn_destructor(void *data) -{ - struct sss_dp_pvt_ctx *pvt; - struct sbus_connection *conn; - - conn = talloc_get_type(data, struct sbus_connection); - if (!conn) return 0; - - /* if this is a regular disconnect just quit */ - if (sbus_conn_disconnecting(conn)) return 0; - - pvt = talloc_get_type(sbus_conn_get_private_data(conn), - struct sss_dp_pvt_ctx); - if (pvt) return 0; - - sss_dp_conn_reconnect(pvt); - - return 0; -} - -int sss_dp_init(struct resp_ctx *rctx, struct sbus_interface *dp_intf, - uint16_t cli_type, uint16_t cli_version, - const char *cli_name, const char *cli_domain) -{ - int ret; - struct sss_dp_pvt_ctx *pvt; - - pvt = talloc_zero(rctx, struct sss_dp_pvt_ctx); - if (!pvt) return ENOMEM; - - pvt->rctx = rctx; - pvt->intf = dp_intf; - pvt->cli_type = cli_type; - pvt->cli_version = cli_version; - pvt->cli_name = talloc_strdup(pvt, cli_name); - if (!pvt->cli_name) return ENOMEM; - pvt->cli_domain = talloc_strdup(pvt, cli_domain); - if (!pvt->cli_domain) return ENOMEM; - - /* Create a hash table to handle queued update requests */ - ret = hash_create(10, &dp_requests, NULL); - if (ret != HASH_SUCCESS) { - fprintf(stderr, "cannot create hash table (%s)\n", hash_error_string(ret)); - talloc_zfree(pvt); - return EIO; - } - - sss_dp_conn_reconnect(pvt); - - return EOK; -} - struct sss_dp_req; struct sss_dp_callback { diff --git a/server/responder/nss/nsssrv.c b/server/responder/nss/nsssrv.c index 456c62929..a896ef31d 100644 --- a/server/responder/nss/nsssrv.c +++ b/server/responder/nss/nsssrv.c @@ -41,7 +41,6 @@ #include "util/btreemap.h" #include "responder/common/responder_packet.h" #include "providers/data_provider.h" -#include "monitor/monitor_sbus.h" #include "monitor/monitor_interfaces.h" #include "sbus/sbus_client.h" @@ -186,35 +185,44 @@ static void nss_shutdown(struct resp_ctx *rctx) exit(0); } +static struct sbus_method nss_dp_methods[] = { + { NULL, NULL } +}; -static void nss_dp_reconnect_init(struct sbus_connection *conn, int status, void *pvt) +struct sbus_interface nss_dp_interface = { + DP_CLI_INTERFACE, + DP_CLI_PATH, + SBUS_DEFAULT_VTABLE, + nss_dp_methods, + NULL +}; + + +static void nss_dp_reconnect_init(struct sbus_connection *conn, + int status, void *pvt) { struct resp_ctx *rctx = talloc_get_type(pvt, struct resp_ctx); + int ret; /* Did we reconnect successfully? */ if (status == SBUS_RECONNECT_SUCCESS) { DEBUG(1, ("Reconnected to the Data Provider.\n")); - return; + + /* Identify ourselves to the data provider */ + ret = dp_common_send_id(conn, + DP_CLI_FRONTEND, + DATA_PROVIDER_VERSION, + "NSS", ""); + /* all fine */ + if (ret == EOK) return; } - /* Handle failure */ + /* Failed to reconnect */ DEBUG(0, ("Could not reconnect to data provider.\n")); /* Kill the backend and let the monitor restart it */ nss_shutdown(rctx); } -static struct sbus_method nss_dp_methods[] = { - { NULL, NULL } -}; - -struct sbus_interface nss_dp_interface = { - DP_CLI_INTERFACE, - DP_CLI_PATH, - SBUS_DEFAULT_VTABLE, - nss_dp_methods, - NULL -}; - int nss_process_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct confdb_ctx *cdb) diff --git a/server/responder/pam/pamsrv.c b/server/responder/pam/pamsrv.c index 6f92eb96f..c751528f7 100644 --- a/server/responder/pam/pamsrv.c +++ b/server/responder/pam/pamsrv.c @@ -40,7 +40,6 @@ #include "util/btreemap.h" #include "responder/common/responder_packet.h" #include "providers/data_provider.h" -#include "monitor/monitor_sbus.h" #include "monitor/monitor_interfaces.h" #include "sbus/sbus_client.h" #include "responder/pam/pamsrv.h" @@ -78,14 +77,43 @@ static int service_reload(DBusMessage *message, struct sbus_connection *conn) { return monitor_common_pong(message, conn); } +static void pam_shutdown(struct resp_ctx *rctx) +{ + /* TODO: Do clean-up here */ + + /* Nothing left to do but exit() */ + exit(0); +} + +static struct sbus_method pam_dp_methods[] = { + { NULL, NULL } +}; + +struct sbus_interface pam_dp_interface = { + DP_CLI_INTERFACE, + DP_CLI_PATH, + SBUS_DEFAULT_VTABLE, + pam_dp_methods, + NULL +}; + + static void pam_dp_reconnect_init(struct sbus_connection *conn, int status, void *pvt) { struct resp_ctx *rctx = talloc_get_type(pvt, struct resp_ctx); + int ret; /* Did we reconnect successfully? */ if (status == SBUS_RECONNECT_SUCCESS) { DEBUG(1, ("Reconnected to the Data Provider.\n")); - return; + + /* Identify ourselves to the data provider */ + ret = dp_common_send_id(conn, + DP_CLI_FRONTEND, + DATA_PROVIDER_VERSION, + "PAM", ""); + /* all fine */ + if (ret == EOK) return; } /* Handle failure */ @@ -94,20 +122,32 @@ static void pam_dp_reconnect_init(struct sbus_connection *conn, int status, void pam_shutdown(rctx); } -static void pam_shutdown(struct resp_ctx *rctx) -{ - /* TODO: Do clean-up here */ - - /* Nothing left to do but exit() */ - exit(0); -} - - -static int pam_process_init(struct main_context *main_ctx, - struct resp_ctx *rctx) +static int pam_process_init(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct confdb_ctx *cdb) { + struct sss_cmd_table *pam_cmds; + struct resp_ctx *rctx; int ret, max_retries; + pam_cmds = get_pam_cmds(); + ret = sss_process_init(mem_ctx, ev, cdb, + pam_cmds, + SSS_PAM_SOCKET_NAME, + SSS_PAM_PRIV_SOCKET_NAME, + PAM_SRV_CONFIG, + PAM_SBUS_SERVICE_NAME, + PAM_SBUS_SERVICE_VERSION, + &monitor_pam_interface, + DP_CLI_FRONTEND, + DATA_PROVIDER_VERSION, + "PAM", "", + &pam_dp_interface, + &rctx); + if (ret != EOK) { + return ret; + } + /* Enable automatic reconnection to the Data Provider */ /* FIXME: "retries" is too generic, either get it from a global config @@ -125,26 +165,12 @@ static int pam_process_init(struct main_context *main_ctx, return EOK; } -static struct sbus_method pam_dp_methods[] = { - { NULL, NULL } -}; - -struct sbus_interface pam_dp_interface = { - DP_CLI_INTERFACE, - DP_CLI_PATH, - SBUS_DEFAULT_VTABLE, - pam_dp_methods, - NULL -}; - int main(int argc, const char *argv[]) { int opt; poptContext pc; struct main_context *main_ctx; int ret; - struct sss_cmd_table *sss_cmds; - struct resp_ctx *rctx; struct poptOption long_options[] = { POPT_AUTOHELP @@ -175,27 +201,11 @@ int main(int argc, const char *argv[]) DEBUG(2, ("Could not set up to exit when parent process does\n")); } - sss_cmds = register_sss_cmds(); - ret = sss_process_init(main_ctx, + ret = pam_process_init(main_ctx, main_ctx->event_ctx, - main_ctx->confdb_ctx, - sss_cmds, - SSS_PAM_SOCKET_NAME, - SSS_PAM_PRIV_SOCKET_NAME, - PAM_SRV_CONFIG, - PAM_SBUS_SERVICE_NAME, - PAM_SBUS_SERVICE_VERSION, - &monitor_pam_interface, - DP_CLI_FRONTEND, - DATA_PROVIDER_VERSION, - "PAM", "", - &pam_dp_interface, - &rctx); + main_ctx->confdb_ctx); if (ret != EOK) return 3; - ret = pam_process_init(main_ctx, rctx); - if (ret != EOK) return 4; - /* loop on main */ server_loop(main_ctx); diff --git a/server/responder/pam/pamsrv.h b/server/responder/pam/pamsrv.h index 672611574..00b365860 100644 --- a/server/responder/pam/pamsrv.h +++ b/server/responder/pam/pamsrv.h @@ -22,7 +22,7 @@ struct pam_auth_req { void *data; }; -struct sss_cmd_table *register_sss_cmds(void); +struct sss_cmd_table *get_pam_cmds(void); int pam_dp_send_req(struct pam_auth_req *preq, int timeout); diff --git a/server/responder/pam/pamsrv_cmd.c b/server/responder/pam/pamsrv_cmd.c index 39d71bb40..12625509e 100644 --- a/server/responder/pam/pamsrv_cmd.c +++ b/server/responder/pam/pamsrv_cmd.c @@ -809,7 +809,7 @@ struct cli_protocol_version *register_cli_protocol_version(void) return pam_cli_protocol_version; } -struct sss_cmd_table *register_sss_cmds(void) +struct sss_cmd_table *get_pam_cmds(void) { static struct sss_cmd_table sss_cmds[] = { {SSS_GET_VERSION, sss_cmd_get_version}, diff --git a/server/responder/pam/pamsrv_dp.c b/server/responder/pam/pamsrv_dp.c index 3696d3d6a..7ea2b7e44 100644 --- a/server/responder/pam/pamsrv_dp.c +++ b/server/responder/pam/pamsrv_dp.c @@ -29,7 +29,6 @@ #include "responder/common/responder_packet.h" #include "providers/data_provider.h" #include "sbus/sbus_client.h" -#include "providers/dp_sbus.h" #include "responder/pam/pamsrv.h" static void pam_dp_process_reply(DBusPendingCall *pending, void *ptr) -- cgit