Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source4/nbt_server/wins/wins_hook.c

    r414 r745  
    6262                              rec->name->name,
    6363                              rec->name->type,
    64                               rec->expire_time);
     64                              (long int) rec->expire_time);
    6565        if (!cmd) goto failed;
    6666
  • trunk/server/source4/nbt_server/wins/wins_ldb.c

    r414 r745  
    3232#include "nbt_server/nbt_server.h"
    3333#include "nbt_server/wins/winsdb.h"
    34 #include "lib/ldb/include/ldb_module.h"
     34#include <ldb_module.h>
    3535#include "system/network.h"
    3636#include "lib/socket/netif.h"
     
    9090        ldb_module_set_private(module, NULL);
    9191
    92         owner = lp_parm_string(lp_ctx, NULL, "winsdb", "local_owner");
     92        owner = lpcfg_parm_string(lp_ctx, NULL, "winsdb", "local_owner");
    9393        if (!owner) {
    9494                struct interface *ifaces;
    95                 load_interfaces(module, lp_interfaces(lp_ctx), &ifaces);
     95                load_interfaces(module, lpcfg_interfaces(lp_ctx), &ifaces);
    9696                owner = iface_n_ip(ifaces, 0);
    9797                if (!owner) {
     
    114114}
    115115
    116 _PUBLIC_ const struct ldb_module_ops ldb_wins_ldb_module_ops = {
     116static const struct ldb_module_ops ldb_wins_ldb_module_ops = {
    117117        .name          = "wins_ldb",
    118118        .add           = wins_ldb_verify,
     
    120120        .init_context  = wins_ldb_init
    121121};
     122
     123int ldb_wins_ldb_module_init(const char *version)
     124{
     125        LDB_MODULE_CHECK_VERSION(version);
     126        return ldb_register_module(&ldb_wins_ldb_module_ops);
     127}
  • trunk/server/source4/nbt_server/wins/winsclient.c

    r414 r745  
    2929#include "param/param.h"
    3030
    31 static void nbtd_wins_refresh_handler(struct composite_context *c);
    32 
    3331/* we send WINS client requests using our primary network interface
    3432*/
     
    5957{
    6058        uint32_t refresh_time;
    61         uint32_t max_refresh_time = lp_parm_int(iname->iface->nbtsrv->task->lp_ctx, NULL, "nbtd", "max_refresh_time", 7200);
     59        uint32_t max_refresh_time = lpcfg_parm_int(iname->iface->nbtsrv->task->lp_ctx, NULL, "nbtd", "max_refresh_time", 7200);
    6260
    6361        refresh_time = MIN(max_refresh_time, iname->ttl/2);
     
    6967}
    7068
     69struct nbtd_wins_refresh_state {
     70        struct nbtd_iface_name *iname;
     71        struct nbt_name_refresh_wins io;
     72};
     73
    7174/*
    7275  called when a wins name refresh has completed
    7376*/
    74 static void nbtd_wins_refresh_handler(struct composite_context *c)
     77static void nbtd_wins_refresh_handler(struct tevent_req *subreq)
    7578{
    7679        NTSTATUS status;
    77         struct nbt_name_refresh_wins io;
    78         struct nbtd_iface_name *iname = talloc_get_type(c->async.private_data,
    79                                                         struct nbtd_iface_name);
    80         TALLOC_CTX *tmp_ctx = talloc_new(iname);
    81 
    82         status = nbt_name_refresh_wins_recv(c, tmp_ctx, &io);
     80        struct nbtd_wins_refresh_state *state =
     81                tevent_req_callback_data(subreq,
     82                struct nbtd_wins_refresh_state);
     83        struct nbtd_iface_name *iname = state->iname;
     84
     85        status = nbt_name_refresh_wins_recv(subreq, state, &state->io);
     86        TALLOC_FREE(subreq);
    8387        if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) {
    8488                /* our WINS server is dead - start registration over
    8589                   from scratch */
    8690                DEBUG(2,("Failed to refresh %s with WINS server %s\n",
    87                          nbt_name_string(tmp_ctx, &iname->name), iname->wins_server));
    88                 talloc_free(tmp_ctx);
     91                         nbt_name_string(state, &iname->name), iname->wins_server));
     92                talloc_free(state);
    8993                nbtd_winsclient_register(iname);
    9094                return;
     
    9397        if (!NT_STATUS_IS_OK(status)) {
    9498                DEBUG(1,("Name refresh failure with WINS for %s - %s\n",
    95                          nbt_name_string(tmp_ctx, &iname->name), nt_errstr(status)));
    96                 talloc_free(tmp_ctx);
    97                 return;
    98         }
    99 
    100         if (io.out.rcode != 0) {
     99                         nbt_name_string(state, &iname->name), nt_errstr(status)));
     100                talloc_free(state);
     101                return;
     102        }
     103
     104        if (state->io.out.rcode != 0) {
    101105                DEBUG(1,("WINS server %s rejected name refresh of %s - %s\n",
    102                          io.out.wins_server, nbt_name_string(tmp_ctx, &iname->name),
    103                          nt_errstr(nbt_rcode_to_ntstatus(io.out.rcode))));
     106                         state->io.out.wins_server,
     107                         nbt_name_string(state, &iname->name),
     108                         nt_errstr(nbt_rcode_to_ntstatus(state->io.out.rcode))));
    104109                iname->nb_flags |= NBT_NM_CONFLICT;
    105                 talloc_free(tmp_ctx);
     110                talloc_free(state);
    106111                return;
    107112        }       
    108113
    109114        DEBUG(4,("Refreshed name %s with WINS server %s\n",
    110                  nbt_name_string(tmp_ctx, &iname->name), iname->wins_server));
     115                 nbt_name_string(state, &iname->name), iname->wins_server));
    111116        /* success - start a periodic name refresh */
    112117        iname->nb_flags |= NBT_NM_ACTIVE;
     
    116121                 * so steal it into the tmp context
    117122                 */
    118                 talloc_steal(tmp_ctx, iname->wins_server);
    119         }
    120         iname->wins_server = talloc_steal(iname, io.out.wins_server);
    121 
     123                talloc_steal(state, iname->wins_server);
     124        }
     125        iname->wins_server = talloc_move(iname, &state->io.out.wins_server);
    122126        iname->registration_time = timeval_current();
     127
     128        talloc_free(state);
     129
    123130        nbtd_wins_start_refresh_timer(iname);
    124 
    125         talloc_free(tmp_ctx);
    126131}
    127132
     
    135140        struct nbtd_iface_name *iname = talloc_get_type(private_data, struct nbtd_iface_name);
    136141        struct nbtd_interface *iface = iname->iface;
    137         struct nbt_name_refresh_wins io;
    138         struct composite_context *c;
    139         TALLOC_CTX *tmp_ctx = talloc_new(iname);
     142        struct nbt_name_socket *nbtsock = wins_socket(iface);
     143        struct tevent_req *subreq;
     144        struct nbtd_wins_refresh_state *state;
     145
     146        state = talloc_zero(iname, struct nbtd_wins_refresh_state);
     147        if (state == NULL) {
     148                return;
     149        }
     150
     151        state->iname = iname;
    140152
    141153        /* setup a wins name refresh request */
    142         io.in.name            = iname->name;
    143         io.in.wins_servers    = (const char **)str_list_make_single(tmp_ctx, iname->wins_server);
    144         io.in.wins_port       = lp_nbt_port(iface->nbtsrv->task->lp_ctx);
    145         io.in.addresses       = nbtd_address_list(iface, tmp_ctx);
    146         io.in.nb_flags        = iname->nb_flags;
    147         io.in.ttl             = iname->ttl;
    148 
    149         if (!io.in.addresses) {
    150                 talloc_free(tmp_ctx);
    151                 return;
    152         }
    153 
    154         c = nbt_name_refresh_wins_send(wins_socket(iface), &io);
    155         if (c == NULL) {
    156                 talloc_free(tmp_ctx);
    157                 return;
    158         }
    159         talloc_steal(c, io.in.addresses);
    160 
    161         c->async.fn = nbtd_wins_refresh_handler;
    162         c->async.private_data = iname;
    163 
    164         talloc_free(tmp_ctx);
    165 }
    166 
     154        state->io.in.name            = iname->name;
     155        state->io.in.wins_servers    = (const char **)str_list_make_single(state, iname->wins_server);
     156        state->io.in.wins_port       = lpcfg_nbt_port(iface->nbtsrv->task->lp_ctx);
     157        state->io.in.addresses       = nbtd_address_list(iface, state);
     158        state->io.in.nb_flags        = iname->nb_flags;
     159        state->io.in.ttl             = iname->ttl;
     160
     161        if (!state->io.in.addresses) {
     162                talloc_free(state);
     163                return;
     164        }
     165
     166        subreq = nbt_name_refresh_wins_send(state, ev, nbtsock, &state->io);
     167        if (subreq == NULL) {
     168                talloc_free(state);
     169                return;
     170        }
     171
     172        tevent_req_set_callback(subreq, nbtd_wins_refresh_handler, state);
     173}
     174
     175struct nbtd_wins_register_state {
     176        struct nbtd_iface_name *iname;
     177        struct nbt_name_register_wins io;
     178};
    167179
    168180/*
    169181  called when a wins name register has completed
    170182*/
    171 static void nbtd_wins_register_handler(struct composite_context *c)
     183static void nbtd_wins_register_handler(struct tevent_req *subreq)
    172184{
    173185        NTSTATUS status;
    174         struct nbt_name_register_wins io;
    175         struct nbtd_iface_name *iname = talloc_get_type(c->async.private_data,
    176                                                         struct nbtd_iface_name);
    177         TALLOC_CTX *tmp_ctx = talloc_new(iname);
    178 
    179         status = nbt_name_register_wins_recv(c, tmp_ctx, &io);
     186        struct nbtd_wins_register_state *state =
     187                tevent_req_callback_data(subreq,
     188                struct nbtd_wins_register_state);
     189        struct nbtd_iface_name *iname = state->iname;
     190
     191        status = nbt_name_register_wins_recv(subreq, state, &state->io);
     192        TALLOC_FREE(subreq);
    180193        if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) {
    181194                /* none of the WINS servers responded - try again
    182195                   periodically */
    183                 int wins_retry_time = lp_parm_int(iname->iface->nbtsrv->task->lp_ctx, NULL, "nbtd", "wins_retry", 300);
     196                int wins_retry_time = lpcfg_parm_int(iname->iface->nbtsrv->task->lp_ctx, NULL, "nbtd", "wins_retry", 300);
    184197                event_add_timed(iname->iface->nbtsrv->task->event_ctx,
    185198                                iname,
     
    187200                                nbtd_wins_register_retry,
    188201                                iname);
    189                 talloc_free(tmp_ctx);
     202                talloc_free(state);
    190203                return;
    191204        }
     
    193206        if (!NT_STATUS_IS_OK(status)) {
    194207                DEBUG(1,("Name register failure with WINS for %s - %s\n",
    195                          nbt_name_string(tmp_ctx, &iname->name), nt_errstr(status)));
    196                 talloc_free(tmp_ctx);
     208                         nbt_name_string(state, &iname->name), nt_errstr(status)));
     209                talloc_free(state);
    197210                return;
    198211        }       
    199212
    200         if (io.out.rcode != 0) {
     213        if (state->io.out.rcode != 0) {
    201214                DEBUG(1,("WINS server %s rejected name register of %s - %s\n",
    202                          io.out.wins_server, nbt_name_string(tmp_ctx, &iname->name),
    203                          nt_errstr(nbt_rcode_to_ntstatus(io.out.rcode))));
     215                         state->io.out.wins_server,
     216                         nbt_name_string(state, &iname->name),
     217                         nt_errstr(nbt_rcode_to_ntstatus(state->io.out.rcode))));
    204218                iname->nb_flags |= NBT_NM_CONFLICT;
    205                 talloc_free(tmp_ctx);
     219                talloc_free(state);
    206220                return;
    207221        }       
     
    214228                 * so steal it into the tmp context
    215229                 */
    216                 talloc_steal(tmp_ctx, iname->wins_server);
    217         }
    218         iname->wins_server = talloc_steal(iname, io.out.wins_server);
     230                talloc_steal(state, iname->wins_server);
     231        }
     232        iname->wins_server = talloc_move(iname, &state->io.out.wins_server);
    219233
    220234        iname->registration_time = timeval_current();
     235
     236        DEBUG(3,("Registered %s with WINS server %s\n",
     237                 nbt_name_string(state, &iname->name), iname->wins_server));
     238
     239        talloc_free(state);
     240
    221241        nbtd_wins_start_refresh_timer(iname);
    222 
    223         DEBUG(3,("Registered %s with WINS server %s\n",
    224                  nbt_name_string(tmp_ctx, &iname->name), iname->wins_server));
    225 
    226         talloc_free(tmp_ctx);
    227242}
    228243
     
    233248{
    234249        struct nbtd_interface *iface = iname->iface;
    235         struct nbt_name_register_wins io;
    236         struct composite_context *c;
     250        struct nbt_name_socket *nbtsock = wins_socket(iface);
     251        struct nbtd_wins_register_state *state;
     252        struct tevent_req *subreq;
     253
     254        state = talloc_zero(iname, struct nbtd_wins_register_state);
     255        if (state == NULL) {
     256                return;
     257        }
     258
     259        state->iname = iname;
    237260
    238261        /* setup a wins name register request */
    239         io.in.name            = iname->name;
    240         io.in.wins_port       = lp_nbt_port(iname->iface->nbtsrv->task->lp_ctx);
    241         io.in.wins_servers    = lp_wins_server_list(iname->iface->nbtsrv->task->lp_ctx);
    242         io.in.addresses       = nbtd_address_list(iface, iname);
    243         io.in.nb_flags        = iname->nb_flags;
    244         io.in.ttl             = iname->ttl;
    245 
    246         if (!io.in.addresses) {
    247                 return;
    248         }
    249 
    250         c = nbt_name_register_wins_send(wins_socket(iface), &io);
    251         if (c == NULL) {
    252                 talloc_free(io.in.addresses);
    253                 return;
    254         }
    255         talloc_steal(c, io.in.addresses);
    256 
    257         c->async.fn = nbtd_wins_register_handler;
    258         c->async.private_data = iname;
    259 }
     262        state->io.in.name         = iname->name;
     263        state->io.in.wins_port    = lpcfg_nbt_port(iface->nbtsrv->task->lp_ctx);
     264        state->io.in.wins_servers = lpcfg_wins_server_list(iface->nbtsrv->task->lp_ctx);
     265        state->io.in.addresses    = nbtd_address_list(iface, state);
     266        state->io.in.nb_flags     = iname->nb_flags;
     267        state->io.in.ttl          = iname->ttl;
     268
     269        if (state->io.in.addresses == NULL) {
     270                talloc_free(state);
     271                return;
     272        }
     273
     274        subreq = nbt_name_register_wins_send(state, iface->nbtsrv->task->event_ctx,
     275                                             nbtsock, &state->io);
     276        if (subreq == NULL) {
     277                talloc_free(state);
     278                return;
     279        }
     280
     281        tevent_req_set_callback(subreq, nbtd_wins_register_handler, state);
     282}
  • trunk/server/source4/nbt_server/wins/winsdb.c

    r414 r745  
    2424#include "nbt_server/nbt_server.h"
    2525#include "nbt_server/wins/winsdb.h"
    26 #include "lib/ldb/include/ldb.h"
    27 #include "lib/ldb/include/ldb_errors.h"
     26#include <ldb.h>
     27#include <ldb_errors.h>
    2828#include "librpc/gen_ndr/ndr_nbt.h"
    2929#include "system/time.h"
     
    101101
    102102        ret = ldb_msg_add_empty(msg, "objectClass", LDB_FLAG_MOD_REPLACE, NULL);
    103         if (ret != 0) goto failed;
     103        if (ret != LDB_SUCCESS) goto failed;
    104104        ret = ldb_msg_add_string(msg, "objectClass", "winsMaxVersion");
    105         if (ret != 0) goto failed;
     105        if (ret != LDB_SUCCESS) goto failed;
    106106        ret = ldb_msg_add_empty(msg, "maxVersion", LDB_FLAG_MOD_REPLACE, NULL);
    107         if (ret != 0) goto failed;
     107        if (ret != LDB_SUCCESS) goto failed;
    108108        ret = ldb_msg_add_fmt(msg, "maxVersion", "%llu", (long long)newMaxVersion);
    109         if (ret != 0) goto failed;
     109        if (ret != LDB_SUCCESS) goto failed;
    110110
    111111        ret = ldb_modify(wins_db, msg);
    112         if (ret != 0) ret = ldb_add(wins_db, msg);
    113         if (ret != 0) goto failed;
     112        if (ret != LDB_SUCCESS) ret = ldb_add(wins_db, msg);
     113        if (ret != LDB_SUCCESS) goto failed;
    114114
    115115        trans = ldb_transaction_commit(wins_db);
     
    260260        }
    261261
    262         *p = '\0';p++;
     262        *p = '\0'; p++;
    263263        addr->address = talloc_strdup(addr, address);
    264264        if (!addr->address) {
     
    320320                                   const char *attr_name, struct winsdb_addr *addr)
    321321{
    322         struct ldb_val val;
    323322        const char *str;
    324323
    325324        if (rec->is_static) {
    326325                str = talloc_strdup(msg, addr->address);
    327                 if (!str) return -1;
     326                if (!str) return LDB_ERR_OPERATIONS_ERROR;
    328327        } else {
    329328                char *expire_time;
    330329                expire_time = ldb_timestring(msg, addr->expire_time);
    331                 if (!expire_time) return -1;
     330                if (!expire_time) return LDB_ERR_OPERATIONS_ERROR;
    332331                str = talloc_asprintf(msg, "%s;winsOwner:%s;expireTime:%s;",
    333332                                      addr->address, addr->wins_owner,
    334333                                      expire_time);
    335334                talloc_free(expire_time);
    336                 if (!str) return -1;
    337         }
    338 
    339         val.data = discard_const_p(uint8_t, str);
    340         val.length = strlen(str);
    341 
    342         return ldb_msg_add_value(msg, attr_name, &val, NULL);
     335                if (!str) return LDB_ERR_OPERATIONS_ERROR;
     336        }
     337
     338        return ldb_msg_add_string(msg, attr_name, str);
    343339}
    344340
     
    508504        addresses[len+1] = NULL;
    509505
    510         ldb_qsort(addresses, len+1 , sizeof(addresses[0]), h, (ldb_qsort_cmp_fn_t)winsdb_addr_sort_list);
     506        LDB_TYPESAFE_QSORT(addresses, len+1, h, winsdb_addr_sort_list);
    511507
    512508        return addresses;
     
    751747                                          TALLOC_CTX *mem_ctx)
    752748{
    753         int i, ret=0;
     749        int i, ret;
    754750        size_t addr_count;
    755751        const char *expire_time;
     
    773769        msg->dn = winsdb_dn(msg, ldb, rec->name);
    774770        if (msg->dn == NULL) goto failed;
    775         ret |= ldb_msg_add_fmt(msg, "type", "0x%02X", rec->name->type);
     771        ret = ldb_msg_add_fmt(msg, "type", "0x%02X", rec->name->type);
    776772        if (rec->name->name && *rec->name->name) {
    777773                ret |= ldb_msg_add_string(msg, "name", rec->name->name);
     
    795791                ret |= ldb_msg_add_winsdb_addr(msg, rec, "address", rec->addresses[i]);
    796792        }
    797         ret |= ldb_msg_add_empty(msg, "registeredBy", 0, NULL);
    798793        if (rec->registered_by) {
     794                ret |= ldb_msg_add_empty(msg, "registeredBy", 0, NULL);
    799795                ret |= ldb_msg_add_string(msg, "registeredBy", rec->registered_by);
    800                 if (ret != 0) goto failed;
    801         }
     796        }
     797        if (ret != LDB_SUCCESS) goto failed;
    802798        return msg;
    803799
     
    816812        TALLOC_CTX *tmp_ctx = talloc_new(wins_db);
    817813        int trans = -1;
    818         int ret = 0;
     814        int ret;
    819815
    820816        trans = ldb_transaction_start(wins_db);
     
    833829        if (msg == NULL) goto failed;
    834830        ret = ldb_add(wins_db, msg);
    835         if (ret != 0) goto failed;
     831        if (ret != LDB_SUCCESS) goto failed;
    836832
    837833        trans = ldb_transaction_commit(wins_db);
     
    860856        int trans;
    861857        int ret;
    862         int i;
     858        unsigned int i;
    863859
    864860        trans = ldb_transaction_start(wins_db);
     
    882878
    883879        ret = ldb_modify(wins_db, msg);
    884         if (ret != 0) goto failed;
     880        if (ret != LDB_SUCCESS) goto failed;
    885881
    886882        trans = ldb_transaction_commit(wins_db);
     
    917913
    918914        ret = ldb_delete(wins_db, dn);
    919         if (ret != 0) goto failed;
     915        if (ret != LDB_SUCCESS) goto failed;
    920916
    921917        trans = ldb_transaction_commit(wins_db);
     
    963959
    964960        ret = ldb_msg_add_string(msg, "@LIST", "wins_ldb");
    965         if (ret != 0) goto failed;
     961        if (ret != LDB_SUCCESS) goto failed;
    966962
    967963        ret = ldb_add(h->ldb, msg);
    968         if (ret != 0) goto failed;
     964        if (ret != LDB_SUCCESS) goto failed;
    969965
    970966        trans = ldb_transaction_commit(h->ldb);
     
    976972        h->ldb = NULL;
    977973
    978         if (lp_parm_bool(lp_ctx, NULL,"winsdb", "nosync", false)) {
     974        if (lpcfg_parm_bool(lp_ctx, NULL,"winsdb", "nosync", false)) {
    979975                flags |= LDB_FLG_NOSYNC;
    980976        }
    981977
    982         h->ldb = ldb_wrap_connect(h, ev_ctx, lp_ctx, lock_path(h, lp_ctx, lp_wins_url(lp_ctx)),
    983                                   NULL, NULL, flags, NULL);
     978        h->ldb = ldb_wrap_connect(h, ev_ctx, lp_ctx, lock_path(h, lp_ctx, lpcfg_wins_url(lp_ctx)),
     979                                  NULL, NULL, flags);
    984980        if (!h->ldb) goto failed;
    985981
     
    10121008        if (!h) return NULL;
    10131009
    1014         if (lp_parm_bool(lp_ctx, NULL,"winsdb", "nosync", false)) {
     1010        if (lpcfg_parm_bool(lp_ctx, NULL,"winsdb", "nosync", false)) {
    10151011                flags |= LDB_FLG_NOSYNC;
    10161012        }
    10171013
    1018         h->ldb = ldb_wrap_connect(h, ev_ctx, lp_ctx, lock_path(h, lp_ctx, lp_wins_url(lp_ctx)),
    1019                                   NULL, NULL, flags, NULL);
    1020         if (!h->ldb) goto failed;       
     1014        h->ldb = ldb_wrap_connect(h, ev_ctx, lp_ctx, lock_path(h, lp_ctx, lpcfg_wins_url(lp_ctx)),
     1015                                  NULL, NULL, flags);
     1016        if (!h->ldb) goto failed;
    10211017
    10221018        h->caller = caller;
    1023         h->hook_script = lp_wins_hook(lp_ctx);
     1019        h->hook_script = lpcfg_wins_hook(lp_ctx);
    10241020
    10251021        h->local_owner = talloc_strdup(h, owner);
     
    10381034        return NULL;
    10391035}
     1036
  • trunk/server/source4/nbt_server/wins/winsserver.c

    r414 r745  
    3333#include "lib/socket/socket.h"
    3434#include "lib/socket/netif.h"
    35 #include "lib/ldb/include/ldb.h"
     35#include <ldb.h>
    3636#include "param/param.h"
    3737#include "libcli/resolve/resolve.h"
     38#include "lib/util/util_net.h"
    3839
    3940/*
     
    282283
    283284        /*
    284          * now remove all addresses that're the client doesn't hold anymore
    285          * and update the time stamp and owner for the ownes that are still there
     285         * now remove all addresses that the client doesn't hold anymore
     286         * and update the time stamp and owner for the ones that are still there
    286287         */
    287288        for (i=0; rec->addresses[i]; i++) {
     
    415416
    416417        s->io.in.nbtd_server    = iface->nbtsrv;
    417         s->io.in.nbt_port       = lp_nbt_port(iface->nbtsrv->task->lp_ctx);
     418        s->io.in.nbt_port       = lpcfg_nbt_port(iface->nbtsrv->task->lp_ctx);
    418419        s->io.in.event_ctx      = iface->nbtsrv->task->event_ctx;
    419420        s->io.in.name           = rec->name;
     
    497498        }
    498499
     500        if (name->scope && strlen(name->scope) > 237) {
     501                rcode = NBT_RCODE_SVR;
     502                goto done;
     503        }
     504
    499505        duplicate_packet = wins_check_wack_queue(iface, packet, src);
    500506        if (duplicate_packet) {
     
    665671
    666672        /* first sort the addresses depending on the matching to the client */
    667         ldb_qsort(addresses, num_addrs , sizeof(addresses[0]),
    668                   src, (ldb_qsort_cmp_fn_t)nbtd_wins_randomize1Clist_sort);
    669 
    670         mask = lp_parm_string(lp_ctx, NULL, "nbtd", "wins_randomize1Clist_mask");
     673        LDB_TYPESAFE_QSORT(addresses, num_addrs, src, nbtd_wins_randomize1Clist_sort);
     674
     675        mask = lpcfg_parm_string(lp_ctx, NULL, "nbtd", "wins_randomize1Clist_mask");
    671676        if (!mask) {
    672677                mask = "255.255.255.0";
     
    746751         */
    747752        if (name->type == NBT_NAME_LOGON &&
    748             lp_parm_bool(lp_ctx, NULL, "nbtd", "wins_prepend1Bto1Cqueries", true)) {
     753            lpcfg_parm_bool(lp_ctx, NULL, "nbtd", "wins_prepend1Bto1Cqueries", true)) {
    749754                struct nbt_name name_1b;
    750755
     
    760765        status = winsdb_lookup(winssrv->wins_db, name, packet, &rec);
    761766        if (!NT_STATUS_IS_OK(status)) {
    762                 if (!lp_wins_dns_proxy(lp_ctx)) {
     767                if (!lpcfg_wins_dns_proxy(lp_ctx)) {
    763768                        goto notfound;
    764769                }
     
    842847         */
    843848        if (name->type == NBT_NAME_LOGON &&
    844             lp_parm_bool(lp_ctx, NULL, "nbtd", "wins_randomize1Clist", false)) {
     849            lpcfg_parm_bool(lp_ctx, NULL, "nbtd", "wins_randomize1Clist", false)) {
    845850                nbtd_wins_randomize1Clist(lp_ctx, addresses, src);
    846851        }
     
    872877
    873878        if (name->type == NBT_NAME_MASTER) {
     879                goto done;
     880        }
     881
     882        if (name->scope && strlen(name->scope) > 237) {
    874883                goto done;
    875884        }
     
    951960                        modify_flags = WINSDB_FLAG_ALLOC_VERSION | WINSDB_FLAG_TAKE_OWNERSHIP;
    952961                }
    953                 if (lp_parm_bool(iface->nbtsrv->task->lp_ctx, NULL, "wreplsrv", "propagate name releases", false)) {
     962                if (lpcfg_parm_bool(iface->nbtsrv->task->lp_ctx, NULL, "wreplsrv", "propagate name releases", false)) {
    954963                        /*
    955964                         * We have an option to propagate every name release,
     
    10301039        const char *owner;
    10311040
    1032         if (!lp_wins_support(nbtsrv->task->lp_ctx)) {
     1041        if (!lpcfg_wins_support(nbtsrv->task->lp_ctx)) {
    10331042                nbtsrv->winssrv = NULL;
    10341043                return NT_STATUS_OK;
     
    10381047        NT_STATUS_HAVE_NO_MEMORY(nbtsrv->winssrv);
    10391048
    1040         nbtsrv->winssrv->config.max_renew_interval = lp_max_wins_ttl(nbtsrv->task->lp_ctx);
    1041         nbtsrv->winssrv->config.min_renew_interval = lp_min_wins_ttl(nbtsrv->task->lp_ctx);
    1042         tmp = lp_parm_int(nbtsrv->task->lp_ctx, NULL, "wreplsrv", "tombstone_interval", 6*24*60*60);
     1049        nbtsrv->winssrv->config.max_renew_interval = lpcfg_max_wins_ttl(nbtsrv->task->lp_ctx);
     1050        nbtsrv->winssrv->config.min_renew_interval = lpcfg_min_wins_ttl(nbtsrv->task->lp_ctx);
     1051        tmp = lpcfg_parm_int(nbtsrv->task->lp_ctx, NULL, "wreplsrv", "tombstone_interval", 6*24*60*60);
    10431052        nbtsrv->winssrv->config.tombstone_interval = tmp;
    1044         tmp = lp_parm_int(nbtsrv->task->lp_ctx, NULL, "wreplsrv"," tombstone_timeout", 1*24*60*60);
     1053        tmp = lpcfg_parm_int(nbtsrv->task->lp_ctx, NULL, "wreplsrv"," tombstone_timeout", 1*24*60*60);
    10451054        nbtsrv->winssrv->config.tombstone_timeout = tmp;
    10461055
    1047         owner = lp_parm_string(nbtsrv->task->lp_ctx, NULL, "winsdb", "local_owner");
     1056        owner = lpcfg_parm_string(nbtsrv->task->lp_ctx, NULL, "winsdb", "local_owner");
    10481057
    10491058        if (owner == NULL) {
    10501059                struct interface *ifaces;
    1051                 load_interfaces(nbtsrv->task, lp_interfaces(nbtsrv->task->lp_ctx), &ifaces);
     1060                load_interfaces(nbtsrv->task, lpcfg_interfaces(nbtsrv->task->lp_ctx), &ifaces);
    10521061                owner = iface_n_ip(ifaces, 0);
    10531062        }
  • trunk/server/source4/nbt_server/wins/winsserver.h

    r414 r745  
    6464};
    6565
     66struct composite_context;
    6667#include "nbt_server/wins/winsserver_proto.h"
  • trunk/server/source4/nbt_server/wins/winswack.c

    r414 r745  
    164164                        struct nbtd_interface *iface;
    165165
    166                         state->release.in.dest_port = lp_nbt_port(state->io->in.nbtd_server->task->lp_ctx);
     166                        state->release.in.dest_port = lpcfg_nbt_port(state->io->in.nbtd_server->task->lp_ctx);
    167167                        state->release.in.dest_addr = state->io->in.addresses[state->current_address];
    168168                        state->release.in.address   = state->release.in.dest_addr;
     
    224224         */
    225225        state->release.in.name        = *state->io->in.name;
    226         state->release.in.dest_port   = lp_nbt_port(state->io->in.nbtd_server->task->lp_ctx);
     226        state->release.in.dest_port   = lpcfg_nbt_port(state->io->in.nbtd_server->task->lp_ctx);
    227227        state->release.in.dest_addr   = state->io->in.addresses[state->current_address];
    228228        state->release.in.address     = state->release.in.dest_addr;
     
    307307
    308308        s->io.in.nbtd_server    = nbtd_server;
    309         s->io.in.nbt_port       = lp_nbt_port(nbtd_server->task->lp_ctx);
     309        s->io.in.nbt_port       = lpcfg_nbt_port(nbtd_server->task->lp_ctx);
    310310        s->io.in.event_ctx      = msg->ev;
    311311        s->io.in.name           = &req->in.name;
Note: See TracChangeset for help on using the changeset viewer.