~ubuntu-branches/ubuntu/vivid/samba/vivid

« back to all changes in this revision

Viewing changes to source3/nmbd/nmbd_serverlistdb.c

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-12-21 13:18:04 UTC
  • mfrom: (0.39.21 sid)
  • Revision ID: package-import@ubuntu.com-20111221131804-xtlr39wx6njehxxr
Tags: 2:3.6.1-3ubuntu1
* Merge from Debian testing.  Remaining changes:
  + debian/patches/VERSION.patch:
    - set SAMBA_VERSION_SUFFIX to Ubuntu.
  + debian/patches/error-trans.fix-276472:
    - Add the translation of Unix Error code -ENOTSUP to NT Error Code
    - NT_STATUS_NOT_SUPPORTED to prevent the Permission denied error.
  + debian/smb.conf:
    - add "(Samba, Ubuntu)" to server string.
    - comment out the default [homes] share, and add a comment about
      "valid users = %S" to show users how to restrict access to
      \\server\username to only username.
    - Set 'usershare allow guests', so that usershare admins are 
      allowed to create public shares in addition to authenticated
      ones.
    - add map to guest = Bad user, maps bad username to guest access.
  + debian/samba-common.config:
    - Do not change priority to high if dhclient3 is installed.
    - Use priority medium instead of high for the workgroup question.
  + debian/control:
    - Don't build against or suggest ctdb.
    - Add dependency on samba-common-bin to samba.
  + Add ufw integration:
    - Created debian/samba.ufw.profile
    - debian/rules, debian/samba.dirs, debian/samba.files: install
      profile
    - debian/control: have samba suggest ufw
  + Add apport hook:
    - Created debian/source_samba.py.
    - debian/rules, debian/samba.dirs, debian/samba-common-bin.files: install
  + Switch to upstart:
    - Add debian/samba.{nmbd,smbd}.upstart.
  + debian/samba.logrotate, debian/samba-common.dhcp, debian/samba.if-up:
    - Make them upstart compatible
  + debian/samba.postinst: 
    - Avoid scary pdbedit warnings on first import.
  + debian/samba-common.postinst: Add more informative error message for
    the case where smb.conf was manually deleted
  + debian/patches/fix-debuglevel-name-conflict.patch: don't use 'debug_level'
    as a global variable name in an NSS module 
  + Dropped:
    - debian/patches/error-trans.fix-276472
    - debian/patches/fix-debuglevel-name-conflict.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
*/
22
22
 
23
23
#include "includes.h"
 
24
#include "system/filesys.h"
 
25
#include "../librpc/gen_ndr/svcctl.h"
 
26
#include "nmbd/nmbd.h"
24
27
 
25
28
int updatecount = 0;
26
29
 
36
39
        for (servrec = work->serverlist; servrec; servrec = nexts) {
37
40
                DEBUG(7,("remove_all_servers: Removing server %s\n",servrec->serv.name));
38
41
                nexts = servrec->next;
39
 
 
40
 
                if (servrec->prev)
41
 
                        servrec->prev->next = servrec->next;
42
 
                if (servrec->next)
43
 
                        servrec->next->prev = servrec->prev;
44
 
 
45
 
                if (work->serverlist == servrec)
46
 
                        work->serverlist = servrec->next;
47
 
 
 
42
                DLIST_REMOVE(work->serverlist, servrec);
48
43
                ZERO_STRUCTP(servrec);
49
44
                SAFE_FREE(servrec);
50
45
        }
59
54
static void add_server_to_workgroup(struct work_record *work,
60
55
                             struct server_record *servrec)
61
56
{
62
 
        struct server_record *servrec2;
63
 
 
64
 
        if (!work->serverlist) {
65
 
                work->serverlist = servrec;
66
 
                servrec->prev = NULL;
67
 
                servrec->next = NULL;
68
 
                return;
69
 
        }
70
 
 
71
 
        for (servrec2 = work->serverlist; servrec2->next; servrec2 = servrec2->next)
72
 
                ;
73
 
 
74
 
        servrec2->next = servrec;
75
 
        servrec->next = NULL;
76
 
        servrec->prev = servrec2;
 
57
        DLIST_ADD_END(work->serverlist, servrec, struct server_record *);
77
58
        work->subnet->work_changed = True;
78
59
}
79
60
 
99
80
 
100
81
void remove_server_from_workgroup(struct work_record *work, struct server_record *servrec)
101
82
{
102
 
        if (servrec->prev)
103
 
                servrec->prev->next = servrec->next;
104
 
        if (servrec->next)
105
 
                servrec->next->prev = servrec->prev;
106
 
 
107
 
        if (work->serverlist == servrec) 
108
 
                work->serverlist = servrec->next; 
109
 
 
 
83
        DLIST_REMOVE(work->serverlist, servrec);
110
84
        ZERO_STRUCTP(servrec);
111
85
        SAFE_FREE(servrec);
112
86
        work->subnet->work_changed = True;