X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fstatus.c;h=0782228ad952c3b99c31274cea6abacbf44489b0;hb=b0bcb8f6b0571592a50ce039882c9319e012a270;hp=cbf59892c157143fb74d9fef60b0de4f12a04bb1;hpb=1a6013c7ecd313e03eee1192d54bee624d4a9293;p=netatalk.git diff --git a/etc/afpd/status.c b/etc/afpd/status.c index cbf59892..0782228a 100644 --- a/etc/afpd/status.c +++ b/etc/afpd/status.c @@ -28,16 +28,13 @@ #endif /* BSD4_4 */ #endif -#include -#include +#include + #include -#include -#include -#include #include #include +#include -#include "globals.h" /* includes */ #include "status.h" #include "afp_config.h" #include "icon.h" @@ -85,14 +82,13 @@ static int status_server(char *data, const char *server, const struct afp_option /* extract the obj part of the server */ Obj = (char *) server; - nbp_name(server, &Obj, &Type, &Zone); if ((size_t)-1 == (len = convert_string( - options->unixcharset, options->maccharset, - Obj, -1, buf, sizeof(buf))) ) { - len = MIN(strlen(Obj), 31); + options->unixcharset, options->maccharset, + Obj, -1, buf, sizeof(buf))) ) { + len = MIN(strlen(Obj), 31); *data++ = len; memcpy( data, Obj, len ); - LOG ( log_error, logtype_afpd, "Could not set servername, using fallback"); + LOG ( log_error, logtype_afpd, "Could not set servername, using fallback"); } else { *data++ = len; memcpy( data, buf, len ); @@ -173,7 +169,7 @@ static u_int16_t status_signature(char *data, int *servoffset, } static size_t status_netaddress(char *data, int *servoffset, - const ASP asp, const DSI *dsi, + const DSI *dsi, const struct afp_options *options) { char *begin; @@ -197,7 +193,7 @@ static size_t status_netaddress(char *data, int *servoffset, /* number of addresses. this currently screws up if we have a dsi connection, but we don't have the ip address. to get around this, we turn off the status flag for tcp/ip. */ - *data++ = ((options->fqdn && dsi)? 1 : 0) + (dsi ? 1 : 0) + (asp ? 1 : 0) + + *data++ = ((options->fqdn && dsi)? 1 : 0) + (dsi ? 1 : 0) + (((options->flags & OPTION_ANNOUNCESSH) && options->fqdn && dsi)? 1 : 0); /* ip address */ @@ -271,23 +267,6 @@ static size_t status_netaddress(char *data, int *servoffset, } } -#ifndef NO_DDP - if (asp) { - const struct sockaddr_at *ddpaddr = atp_sockaddr(asp->asp_atp); - - /* ddp address */ - *data++ = 6; - *data++ = 0x03; /* ddp address */ - memcpy(data, &ddpaddr->sat_addr.s_net, sizeof(ddpaddr->sat_addr.s_net)); - data += sizeof(ddpaddr->sat_addr.s_net); - memcpy(data, &ddpaddr->sat_addr.s_node, - sizeof(ddpaddr->sat_addr.s_node)); - data += sizeof(ddpaddr->sat_addr.s_node); - memcpy(data, &ddpaddr->sat_port, sizeof(ddpaddr->sat_port)); - data += sizeof(ddpaddr->sat_port); - } -#endif /* ! NO_DDP */ - /* calculate/store Directory Services Names offset */ offset = htons(data - begin); *servoffset += sizeof(offset); @@ -374,18 +353,15 @@ static size_t status_utf8servername(char *data, int *nameoffset, /* extract the obj part of the server */ Obj = (char *) (options->server ? options->server : options->hostname); - nbp_name(options->server ? options->server : options->hostname, &Obj, &Type, &Zone); - if ((size_t) -1 == (len = convert_string ( - options->unixcharset, CH_UTF8_MAC, - Obj, -1, data+sizeof(namelen), maxstatuslen-offset )) ) { - LOG ( log_error, logtype_afpd, "Could not set utf8 servername"); + options->unixcharset, CH_UTF8_MAC, + Obj, -1, data+sizeof(namelen), maxstatuslen-offset )) ) { + LOG ( log_error, logtype_afpd, "Could not set utf8 servername"); - /* set offset to 0 */ - memset(begin + *nameoffset, 0, sizeof(offset)); + /* set offset to 0 */ + memset(begin + *nameoffset, 0, sizeof(offset)); data = begin + offset; - } - else { + } else { namelen = htons(len); memcpy( data, &namelen, sizeof(namelen)); data += sizeof(namelen); @@ -425,24 +401,16 @@ static void status_icon(char *data, const unsigned char *icondata, /* --------------------- */ -void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig, +void status_init(AFPConfig *dsiconfig, const struct afp_options *options) { - ASP asp; DSI *dsi; char *status = NULL; size_t statuslen; int c, sigoff, ipok; - if (!(aspconfig || dsiconfig) || !options) + if (!dsiconfig || !options) return; - - if (aspconfig) { - status = aspconfig->status; - maxstatuslen=sizeof(aspconfig->status); - asp = aspconfig->obj.handle; - } else - asp = NULL; ipok = 0; if (dsiconfig) { @@ -494,7 +462,7 @@ void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig, c = status_server(status, options->server ? options->server : options->hostname, options); status_machine(status); - status_versions(status, asp, dsi); + status_versions(status, dsi); status_uams(status, options->uamlist); if (options->flags & OPTION_CUSTOMICON) status_icon(status, icon, sizeof(icon), c); @@ -504,7 +472,7 @@ void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig, sigoff = status_signature(status, &c, options); /* c now contains the offset where the netaddress offset lives */ - status_netaddress(status, &c, asp, dsi, options); + status_netaddress(status, &c, dsi, options); /* c now contains the offset where the Directory Names Count offset lives */ statuslen = status_directorynames(status, &c, dsi, options); @@ -513,16 +481,6 @@ void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig, if ( statuslen < maxstatuslen) statuslen = status_utf8servername(status, &c, dsi, options); -#ifndef NO_DDP - if (aspconfig) { - if (dsiconfig) /* status is dsiconfig->status */ - memcpy(aspconfig->status, status, statuslen); - asp_setstatus(asp, status, statuslen); - aspconfig->signature = status + sigoff; - aspconfig->statuslen = statuslen; - } -#endif /* ! NO_DDP */ - if (dsiconfig) { if ((options->flags & OPTION_CUSTOMICON) == 0) { status_icon(status, apple_tcp_icon, sizeof(apple_tcp_icon), 0);