/* register ourselves as a available server */ NTSTATUS server_service_cldapd_init(TALLOC_CTX *ctx) { struct service_details details = { .inhibit_fork_on_accept = true, .inhibit_pre_fork = true }; return register_server_service(ctx, "cldap", cldapd_task_init, &details); }
/* register ourselves as a available server */ NTSTATUS server_service_drepl_init(TALLOC_CTX *ctx) { struct service_details details = { .inhibit_fork_on_accept = true, .inhibit_pre_fork = true, }; return register_server_service(ctx, "drepl", dreplsrv_task_init, &details); }
/* called at smbd startup - register ourselves as a server service */ NTSTATUS server_service_kdc_init(TALLOC_CTX *ctx) { struct service_details details = { .inhibit_fork_on_accept = true, /* * Need to prevent pre-forking on kdc. * The task_init function is run on the master process only * and the irpc process name is registered in it's event loop. * The child worker processes initialise their event loops on * fork, so are not listening for the irpc event. * * The master process does not wait on that event context * the master process is responsible for managing the worker * processes not performing work. */ .inhibit_pre_fork = true }; return register_server_service(ctx, "kdc", kdc_task_init, &details); }
/* register ourselves as a available server */ NTSTATUS server_service_nbtd_init(void) { return register_server_service("nbt", nbtd_task_init); }
/* * SDP server initialization on startup includes creating the * l2cap and unix sockets over which discovery and registration clients * access us respectively */ static int init_server(uint16_t mtu, int master, int compat) { struct l2cap_options opts; struct sockaddr_l2 l2addr; struct sockaddr_un unaddr; socklen_t optlen; /* Register the public browse group root */ register_public_browse_group(); /* Register the SDP server's service record */ register_server_service(); /* Create L2CAP socket */ l2cap_sock = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP); if (l2cap_sock < 0) { error("opening L2CAP socket: %s", strerror(errno)); return -1; } memset(&l2addr, 0, sizeof(l2addr)); l2addr.l2_family = AF_BLUETOOTH; bacpy(&l2addr.l2_bdaddr, BDADDR_ANY); l2addr.l2_psm = htobs(SDP_PSM); if (bind(l2cap_sock, (struct sockaddr *) &l2addr, sizeof(l2addr)) < 0) { error("binding L2CAP socket: %s", strerror(errno)); return -1; } if (master) { int opt = L2CAP_LM_MASTER; if (setsockopt(l2cap_sock, SOL_L2CAP, L2CAP_LM, &opt, sizeof(opt)) < 0) { error("setsockopt: %s", strerror(errno)); return -1; } } if (mtu > 0) { memset(&opts, 0, sizeof(opts)); optlen = sizeof(opts); if (getsockopt(l2cap_sock, SOL_L2CAP, L2CAP_OPTIONS, &opts, &optlen) < 0) { error("getsockopt: %s", strerror(errno)); return -1; } opts.omtu = mtu; opts.imtu = mtu; if (setsockopt(l2cap_sock, SOL_L2CAP, L2CAP_OPTIONS, &opts, sizeof(opts)) < 0) { error("setsockopt: %s", strerror(errno)); return -1; } } if (listen(l2cap_sock, 5) < 0) { error("listen: %s", strerror(errno)); return -1; } if (!compat) { unix_sock = -1; return 0; } /* Create local Unix socket */ unix_sock = socket(PF_UNIX, SOCK_STREAM, 0); if (unix_sock < 0) { error("opening UNIX socket: %s", strerror(errno)); return -1; } memset(&unaddr, 0, sizeof(unaddr)); unaddr.sun_family = AF_UNIX; strcpy(unaddr.sun_path, SDP_UNIX_PATH); unlink(unaddr.sun_path); if (bind(unix_sock, (struct sockaddr *) &unaddr, sizeof(unaddr)) < 0) { error("binding UNIX socket: %s", strerror(errno)); return -1; } if (listen(unix_sock, 5) < 0) { error("listen UNIX socket: %s", strerror(errno)); return -1; } chmod(SDP_UNIX_PATH, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); return 0; }
/* register ourselves as a available server */ NTSTATUS server_service_cldapd_init(void) { return register_server_service("cldap", cldapd_task_init); }
/* register ourselves as a available server */ NTSTATUS server_service_drepl_init(void) { return register_server_service("drepl", dreplsrv_task_init); }
/* called at smbd startup - register ourselves as a server service */ NTSTATUS server_service_smb_init(void) { share_init(); return register_server_service("smb", smbsrv_task_init); }
NTSTATUS server_service_s3fs_init(void) { return register_server_service("s3fs", s3fs_task_init); }
/* register ourselves as a available server */ NTSTATUS server_service_winbind_init(void) { return register_server_service("winbind", winbind_task_init); }
NTSTATUS server_service_ldap_init(void) { return register_server_service("ldap", ldapsrv_task_init); }
/* called at smbd startup - register ourselves as a server service */ NTSTATUS server_service_web_init(void) { return register_server_service("web", websrv_task_init); }
/* called at smbd startup - register ourselves as a server service */ NTSTATUS server_service_samba3_smb_init(void) { return register_server_service("samba3_smb", samba3_smb_task_init); }
/* register ourselves as a available server */ NTSTATUS server_service_kcc_init(void) { return register_server_service("kcc", kccsrv_task_init); }