7bef330bf51d1ec828474332ae99abc5c253a6f2
[samba.git] / source3 / libads / net_ads_setspn.c
1 /*
2    Unix SMB/CIFS implementation.
3    net ads setspn routines
4    Copyright (C) Noel Power 2018
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #include "includes.h"
21 #include "ads.h"
22
23 #ifdef HAVE_ADS
24 bool ads_setspn_list(ADS_STRUCT *ads, const char *machine_name)
25 {
26         size_t i = 0;
27         TALLOC_CTX *frame = NULL;
28         char **spn_array = NULL;
29         size_t num_spns = 0;
30         bool ok = false;
31         ADS_STATUS status;
32
33         frame = talloc_stackframe();
34         status = ads_get_service_principal_names(frame,
35                                                  ads,
36                                                  machine_name,
37                                                  &spn_array,
38                                                  &num_spns);
39         if (!ADS_ERR_OK(status)) {
40                 goto done;
41         }
42
43         d_printf("Registered SPNs for %s\n", machine_name);
44         for (i = 0; i < num_spns; i++) {
45                 d_printf("\t%s\n", spn_array[i]);
46         }
47
48         ok = true;
49 done:
50         TALLOC_FREE(frame);
51         return ok;
52 }
53
54 #endif /* HAVE_ADS */