From 732d51cb416490dc8d11c05a4eafc96095c4427a Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh@redhat.com>
Date: Fri, 12 Feb 2010 10:25:11 -0500
Subject: [PATCH] Make attr_type an integer

Previously it was a string being passed and converted into an
integer. It will be more efficient this way (and simpler for other
implementers)
---
 server/providers/data_provider_be.c    |   28 +++++++++++-----------------
 server/responder/common/responder_dp.c |    4 ++--
 2 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/server/providers/data_provider_be.c b/server/providers/data_provider_be.c
index 135a3ef..15afa55 100644
--- a/server/providers/data_provider_be.c
+++ b/server/providers/data_provider_be.c
@@ -309,8 +309,9 @@ static int be_get_account_info(DBusMessage *message, struct sbus_connection *con
     dbus_bool_t dbret;
     void *user_data;
     uint32_t type;
-    char *attrs, *filter;
-    int attr_type, filter_type;
+    char *filter;
+    int filter_type;
+    uint32_t attr_type;
     char *filter_val;
     int ret;
     dbus_uint16_t err_maj;
@@ -328,7 +329,7 @@ static int be_get_account_info(DBusMessage *message, struct sbus_connection *con
 
     ret = dbus_message_get_args(message, &dbus_error,
                                 DBUS_TYPE_UINT32, &type,
-                                DBUS_TYPE_STRING, &attrs,
+                                DBUS_TYPE_UINT32, &attr_type,
                                 DBUS_TYPE_STRING, &filter,
                                 DBUS_TYPE_INVALID);
     if (!ret) {
@@ -337,7 +338,7 @@ static int be_get_account_info(DBusMessage *message, struct sbus_connection *con
         return EIO;
     }
 
-    DEBUG(4, ("Got request for [%u][%s][%s]\n", type, attrs, filter));
+    DEBUG(4, ("Got request for [%u][%d][%s]\n", type, attr_type, filter));
 
     reply = dbus_message_new_method_return(message);
     if (!reply) return ENOMEM;
@@ -372,20 +373,13 @@ static int be_get_account_info(DBusMessage *message, struct sbus_connection *con
          */
     }
 
-    if (attrs) {
-        if (strcmp(attrs, "core") == 0) attr_type = BE_ATTR_CORE;
-        else if (strcmp(attrs, "membership") == 0) attr_type = BE_ATTR_MEM;
-        else if (strcmp(attrs, "all") == 0) attr_type = BE_ATTR_ALL;
-        else {
-            err_maj = DP_ERR_FATAL;
-            err_min = EINVAL;
-            err_msg = "Invalid Attrs Parameter";
-            goto done;
-        }
-    } else {
+    if ((attr_type != BE_ATTR_CORE) &&
+        (attr_type != BE_ATTR_MEM) &&
+        (attr_type != BE_ATTR_ALL)) {
+        /* Unrecognized attr type */
         err_maj = DP_ERR_FATAL;
         err_min = EINVAL;
-        err_msg = "Missing Attrs Parameter";
+        err_msg = "Invalid Attrs Parameter";
         goto done;
     }
 
@@ -430,7 +424,7 @@ static int be_get_account_info(DBusMessage *message, struct sbus_connection *con
         goto done;
     }
     req->entry_type = type;
-    req->attr_type = attr_type;
+    req->attr_type = (int)attr_type;
     req->filter_type = filter_type;
     req->filter_value = talloc_strdup(req, filter_val);
 
diff --git a/server/responder/common/responder_dp.c b/server/responder/common/responder_dp.c
index 9d54558..6fec6cd 100644
--- a/server/responder/common/responder_dp.c
+++ b/server/responder/common/responder_dp.c
@@ -418,7 +418,7 @@ static int sss_dp_send_acct_req_create(struct resp_ctx *rctx,
     dbus_bool_t dbret;
     struct sss_dp_callback *cb;
     struct sss_dp_req *sdp_req;
-    const char *attrs = "core";
+    uint32_t attrs = BE_ATTR_CORE;
     struct be_conn *be_conn;
     int ret;
 
@@ -449,7 +449,7 @@ static int sss_dp_send_acct_req_create(struct resp_ctx *rctx,
 
     dbret = dbus_message_append_args(msg,
                                      DBUS_TYPE_UINT32, &be_type,
-                                     DBUS_TYPE_STRING, &attrs,
+                                     DBUS_TYPE_UINT32, &attrs,
                                      DBUS_TYPE_STRING, &filter,
                                      DBUS_TYPE_INVALID);
     if (!dbret) {
-- 
1.6.6

