summaryrefslogtreecommitdiff
path: root/src/providers/ipa/ipa_subdomains.c
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2012-10-11 12:35:32 +0200
committerJakub Hrozek <jhrozek@redhat.com>2012-10-12 16:42:17 +0200
commit70eaade10feedd7845e39170d0b7eebf3a030af1 (patch)
tree5c78acb29cdbc356ec5621210400dbe3661a411e /src/providers/ipa/ipa_subdomains.c
parent1774ee9a61b9d691dadd1a0538f32bcdcc84f72f (diff)
downloadsssd-70eaade10feedd7845e39170d0b7eebf3a030af1.tar.gz
sssd-70eaade10feedd7845e39170d0b7eebf3a030af1.tar.bz2
sssd-70eaade10feedd7845e39170d0b7eebf3a030af1.zip
Allow extdom exop to return flat domain name as well
There are case where the extdom extended operation will return the flat or NetBIOS name of a domain instead of the DNS domain name. If this name is available for the current domain we accept it as well. Related to https://fedorahosted.org/sssd/ticket/1561
Diffstat (limited to 'src/providers/ipa/ipa_subdomains.c')
-rw-r--r--src/providers/ipa/ipa_subdomains.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/providers/ipa/ipa_subdomains.c b/src/providers/ipa/ipa_subdomains.c
index 1da2b8cd..36ffafd9 100644
--- a/src/providers/ipa/ipa_subdomains.c
+++ b/src/providers/ipa/ipa_subdomains.c
@@ -80,6 +80,30 @@ struct ipa_subdomains_ctx {
struct sysdb_subdom *subdoms;
};
+const char *get_flat_name_from_subdomain_name(struct be_ctx *be_ctx,
+ const char *name)
+{
+ size_t c;
+ struct ipa_subdomains_ctx *ctx;
+
+ ctx = talloc_get_type(be_ctx->bet_info[BET_SUBDOMAINS].pvt_bet_data,
+ struct ipa_subdomains_ctx);
+ if (ctx == NULL) {
+ DEBUG(SSSDBG_TRACE_ALL, ("Subdomains are not configured.\n"));
+ return NULL;
+ }
+
+ for (c = 0; c < ctx->num_subdoms; c++) {
+ if (strcasecmp(ctx->subdoms[c].name, name) == 0 ||
+ (ctx->subdoms[c].flat_name != NULL &&
+ strcasecmp(ctx->subdoms[c].flat_name, name) == 0)) {
+ return ctx->subdoms[c].flat_name;
+ }
+ }
+
+ return NULL;
+}
+
static void ipa_subdomains_reply(struct be_req *be_req, int dp_err, int result)
{
if (be_req) {