Ignore:
Timestamp:
Aug 2, 2010, 6:40:21 PM (15 years ago)
Author:
Silvan Scherrer
Message:

Samba 3.5: vendor update to 3.5.4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source3/libads/kerberos.c

    r414 r478  
    716716static char *print_kdc_line(char *mem_ctx,
    717717                        const char *prev_line,
    718                         const struct sockaddr_storage *pss)
     718                        const struct sockaddr_storage *pss,
     719                        const char *kdc_name)
    719720{
    720721        char *kdc_str = NULL;
     
    727728                char addr[INET6_ADDRSTRLEN];
    728729                uint16_t port = get_sockaddr_port(pss);
     730
     731                DEBUG(10,("print_kdc_line: IPv6 case for kdc_name: %s, port: %d\n",
     732                        kdc_name, port));
    729733
    730734                if (port != 0 && port != DEFAULT_KRB5_PORT) {
     
    744748                                        print_canonical_sockaddr(mem_ctx, pss),
    745749                                        gai_strerror(ret)));
     750                                return NULL;
    746751                        }
    747752                        /* Success, use host:port */
     
    752757                                        (unsigned int)port);
    753758                } else {
    754                         kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
    755                                         prev_line,
    756                                         print_sockaddr(addr,
    757                                                 sizeof(addr),
    758                                                 pss));
     759
     760                        /* no krb5 lib currently supports "kdc = ipv6 address"
     761                         * at all, so just fill in just the kdc_name if we have
     762                         * it and let the krb5 lib figure out the appropriate
     763                         * ipv6 address - gd */
     764
     765                        if (kdc_name) {
     766                                kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
     767                                                prev_line, kdc_name);
     768                        } else {
     769                                kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n",
     770                                                prev_line,
     771                                                print_sockaddr(addr,
     772                                                        sizeof(addr),
     773                                                        pss));
     774                        }
    759775                }
    760776        }
     
    773789                const char *realm,
    774790                const char *sitename,
    775                 struct sockaddr_storage *pss)
     791                struct sockaddr_storage *pss,
     792                const char *kdc_name)
    776793{
    777794        int i;
     
    780797        int count_site = 0;
    781798        int count_nonsite;
    782         char *kdc_str = print_kdc_line(mem_ctx, "", pss);
     799        char *kdc_str = print_kdc_line(mem_ctx, "", pss, kdc_name);
    783800
    784801        if (kdc_str == NULL) {
     
    804821                        kdc_str = print_kdc_line(mem_ctx,
    805822                                                kdc_str,
    806                                                 &ip_srv_site[i].ss);
     823                                                &ip_srv_site[i].ss,
     824                                                NULL);
    807825                        if (!kdc_str) {
    808826                                SAFE_FREE(ip_srv_site);
     
    841859                kdc_str = print_kdc_line(mem_ctx,
    842860                                kdc_str,
    843                                 &ip_srv_nonsite[i].ss);
     861                                &ip_srv_nonsite[i].ss,
     862                                NULL);
    844863                if (!kdc_str) {
    845864                        SAFE_FREE(ip_srv_site);
     
    869888                                                const char *domain,
    870889                                                const char *sitename,
    871                                                 struct sockaddr_storage *pss)
     890                                                struct sockaddr_storage *pss,
     891                                                const char *kdc_name)
    872892{
    873893        char *dname;
     
    913933        strupper_m(realm_upper);
    914934
    915         kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss);
     935        kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss, kdc_name);
    916936        if (!kdc_ip_string) {
    917937                goto done;
Note: See TracChangeset for help on using the changeset viewer.