Ignore:
Timestamp:
Nov 29, 2012, 1:59:04 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.9

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server/source3/utils/net_lookup.c

    r745 r751  
    277277        krb5_error_code rc;
    278278        krb5_context ctx;
    279         struct sockaddr_in *addrs;
    280         int num_kdcs,i;
    281         krb5_data realm;
    282         char **realms;
     279        struct ip_service *kdcs;
     280        const char *realm;
     281        int num_kdcs = 0;
     282        int i;
     283        NTSTATUS status;
    283284
    284285        initialize_krb5_error_table();
     
    290291        }
    291292
    292         if (argc>0) {
    293                 realm.data = CONST_DISCARD(char *, argv[0]);
    294                 realm.length = strlen(argv[0]);
     293        if (argc > 0) {
     294                realm = argv[0];
    295295        } else if (lp_realm() && *lp_realm()) {
    296                 realm.data = lp_realm();
    297                 realm.length = strlen((const char *)realm.data);
     296                realm = lp_realm();
    298297        } else {
     298                char **realms;
     299
    299300                rc = krb5_get_host_realm(ctx, NULL, &realms);
    300301                if (rc) {
     
    303304                        return -1;
    304305                }
    305                 realm.data = (char *) *realms;
    306                 realm.length = strlen((const char *)realm.data);
    307         }
    308 
    309         rc = smb_krb5_locate_kdc(ctx, &realm, (struct sockaddr **)(void *)&addrs, &num_kdcs, 0);
    310         if (rc) {
    311                 DEBUG(1, ("smb_krb5_locate_kdc failed (%s)\n", error_message(rc)));
    312                 return -1;
    313         }
    314         for (i=0;i<num_kdcs;i++)
    315                 if (addrs[i].sin_family == AF_INET)
    316                         d_printf("%s:%hd\n", inet_ntoa(addrs[i].sin_addr),
    317                                  ntohs(addrs[i].sin_port));
    318         return 0;
    319 
     306                realm = (const char *) *realms;
     307        }
     308
     309        status = get_kdc_list(realm, NULL, &kdcs, &num_kdcs);
     310        if (!NT_STATUS_IS_OK(status)) {
     311                DEBUG(1,("get_kdc_list failed (%s)\n", nt_errstr(status)));
     312                return -1;
     313        }
     314
     315        for (i = 0; i < num_kdcs; i++) {
     316                char addr[INET6_ADDRSTRLEN];
     317
     318                print_sockaddr(addr, sizeof(addr), &kdcs[i].ss);
     319
     320                d_printf("%s:%hd\n", addr, kdcs[i].port);
     321        }
     322
     323        return 0;
    320324#endif
    321325        DEBUG(1, ("No kerberos support\n"));
Note: See TracChangeset for help on using the changeset viewer.