dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina/*
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina Authors:
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina Pavel Březina <pbrezina@redhat.com>
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina Copyright (C) 2016 Red Hat
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina This program is free software; you can redistribute it and/or modify
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina it under the terms of the GNU General Public License as published by
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina the Free Software Foundation; either version 3 of the License, or
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina (at your option) any later version.
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina This program is distributed in the hope that it will be useful,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina GNU General Public License for more details.
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina You should have received a copy of the GNU General Public License
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina*/
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina#include <talloc.h>
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina#include <tevent.h>
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina#include "sbus/sssd_dbus.h"
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina#include "providers/data_provider/dp_private.h"
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina#include "providers/data_provider/dp_iface.h"
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina#include "providers/backend.h"
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina#include "util/util.h"
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březinaerrno_t dp_host_handler(struct sbus_request *sbus_req,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina void *dp_cli,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina uint32_t dp_flags,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina const char *name,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina const char *alias)
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina{
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina struct dp_hostid_data *data;
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina const char *key;
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina if (name == NULL) {
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina return EINVAL;
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina }
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina data = talloc_zero(sbus_req, struct dp_hostid_data);
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina if (data == NULL) {
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina return ENOMEM;
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina }
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina data->name = name;
d6f1b16baf8106d709e3fac585a12789dcb6bd29Pavel Březina data->alias = SBUS_SET_STRING(alias);
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina key = talloc_asprintf(data, "%s:%s", name,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina (data->alias == NULL ? "(null)" : data->alias));
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina if (key == NULL) {
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina talloc_free(data);
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina return ENOMEM;
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina }
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina dp_req_with_reply(dp_cli, NULL, "HostID", key, sbus_req, DPT_HOSTID,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina DPM_HOSTID_HANDLER, dp_flags, data,
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina dp_req_reply_std, struct dp_reply_std);
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina return EOK;
dea636af4d1902a081ee891f1b19ee2f8729d759Pavel Březina}