From 745338dceac40ecb4230ee518e850dc5d3cef6a5 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Fri, 9 May 2014 16:07:54 +0200 Subject: libwbclient-sssd: implement basic functions --- nsswitch/libwbclient/wbc_util_sssd.c | 63 ++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) (limited to 'nsswitch/libwbclient/wbc_util_sssd.c') diff --git a/nsswitch/libwbclient/wbc_util_sssd.c b/nsswitch/libwbclient/wbc_util_sssd.c index d1049e239b3..50edc072bc3 100644 --- a/nsswitch/libwbclient/wbc_util_sssd.c +++ b/nsswitch/libwbclient/wbc_util_sssd.c @@ -25,13 +25,26 @@ #include "../winbind_client.h" #include "wbc_sssd_internal.h" +/* For WINBIND_INTERFACE_VERSION */ +#include "../winbind_struct_protocol.h" + /** @brief Ping winbindd to see if the daemon is running * * @return #wbcErr **/ wbcErr wbcPing(void) { - WBC_SSSD_NOT_IMPLEMENTED; + /* TODO: add real check */ + return WBC_ERR_SUCCESS; +} + +static void wbcInterfaceDetailsDestructor(void *ptr) +{ + struct wbcInterfaceDetails *i = (struct wbcInterfaceDetails *)ptr; + free(i->winbind_version); + free(i->netbios_name); + free(i->netbios_domain); + free(i->dns_domain); } /** @@ -44,7 +57,51 @@ wbcErr wbcPing(void) wbcErr wbcInterfaceDetails(struct wbcInterfaceDetails **_details) { - WBC_SSSD_NOT_IMPLEMENTED; + wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; + struct wbcInterfaceDetails *info; + info = (struct wbcInterfaceDetails *)wbcAllocateMemory( + 1, sizeof(struct wbcInterfaceDetails), + wbcInterfaceDetailsDestructor); + if (info == NULL) { + return WBC_ERR_NO_MEMORY; + } + + /* TODO: currently this call just returns a suitable winbind_separator + * for wbinfo. */ + + info->interface_version = WINBIND_INTERFACE_VERSION; + info->winbind_version = strdup("libwbclient for SSSD"); + if (info->winbind_version == NULL) { + wbc_status = WBC_ERR_NO_MEMORY; + goto done; + } + + info->winbind_separator = '\\'; + + info->netbios_name = strdup("-not available-"); + if (info->netbios_name == NULL) { + wbc_status = WBC_ERR_NO_MEMORY; + goto done; + } + + info->netbios_domain = strdup("-not available-"); + if (info->netbios_domain == NULL) { + wbc_status = WBC_ERR_NO_MEMORY; + goto done; + } + + info->dns_domain = strdup("-not available-"); + if (info->dns_domain == NULL) { + wbc_status = WBC_ERR_NO_MEMORY; + goto done; + } + + *_details = info; + info = NULL; + wbc_status = WBC_ERR_SUCCESS; +done: + wbcFreeMemory(info); + return wbc_status; } /** @brief Lookup the current status of a trusted domain, sync wrapper @@ -70,12 +127,14 @@ wbcErr wbcDcInfo(const char *domain, size_t *num_dcs, /* Resolve a NetbiosName via WINS */ wbcErr wbcResolveWinsByName(const char *name, char **ip) { + /* SSSD does not support WINS */ WBC_SSSD_NOT_IMPLEMENTED; } /* Resolve an IP address via WINS into a NetbiosName */ wbcErr wbcResolveWinsByIP(const char *ip, char **name) { + /* SSSD does not support WINS */ WBC_SSSD_NOT_IMPLEMENTED; } -- cgit