nmbd_sendannounce.c: Remote announcement was announcing to the wrong name !
nmblookup.c: Fix for substitutions not seeing hostname.
testparm.c: Fix for substitutions not seeing hostname.
wsmbstatus.c: Fix for substitutions not seeing hostname.
util.c: Change read_udp_socket to use sockaddr_in rather than dubiously
messing around with an opaque data type (sockaddr).
Jeremy.
(This used to be commit
776ccf5c0641b5aa300236c2612b5f2761d1179f)
int read_udp_socket(int fd,char *buf,int len)
{
int ret;
- struct sockaddr sock;
+ struct sockaddr_in sock;
int socklen;
socklen = sizeof(sock);
bzero((char *)&sock,socklen);
bzero((char *)&lastip,sizeof(lastip));
- ret = recvfrom(fd,buf,len,0,&sock,&socklen);
+ ret = recvfrom(fd,buf,len,0,(struct sockaddr *)&sock,&socklen);
if (ret <= 0) {
DEBUG(2,("read socket failed. ERRNO=%s\n",strerror(errno)));
return(0);
}
- lastip = *(struct in_addr *) &sock.sa_data[2];
- lastport = ntohs(((struct sockaddr_in *)&sock)->sin_port);
+ lastip = sock.sin_addr;
+ lastport = ntohs(sock.sin_port);
DEBUG(10,("read_udp_socket: lastip %s lastport %d read: %d\n",
inet_ntoa(lastip), lastport, ret));
if ((osmajor < 36) || (osmajor > 38) || (osminor !=0))
{
- DEBUG(5,("process_lm_host_announce: LM Announcement packet does not " \
- "originate from OS/2 Warp client. Ignoring packet.\n"));
+ DEBUG(5,("process_lm_host_announce: LM Announcement packet does not \
+originate from OS/2 Warp client. Ignoring packet.\n"));
/* Could have been from a Windows machine (with its LM Announce enabled),
or a Samba server. Then don't disrupt the current browse list. */
return;
send_announcement(FIRST_SUBNET, ANN_HostAnnouncement,
name, /* From nbt name. */
- wgroup, 0x1e, /* To nbt name. */
+ wgroup, 0x1d, /* To nbt name. */
addr, /* To ip. */
REMOTE_ANNOUNCE_INTERVAL, /* Time until next announce. */
name, /* Name to announce. */
exit(1);
}
+ init_structs();
+
if (!lp_load(servicesf,True)) {
fprintf(stderr, "Can't load %s - run testparm to debug it\n", servicesf);
}
load_interfaces();
- init_structs();
if (!open_sockets()) return(1);
if (!got_bcast)
/* these live in util.c */
extern FILE *dbf;
extern int DEBUGLEVEL;
+extern pstring myhostname;
int main(int argc, char *argv[])
{
printf("Load smb config files from %s\n",configfile);
+ if(!get_myname(myhostname,NULL))
+ {
+ printf("Failed to get my hostname.\n");
+ return(1);
+ }
+
if (!lp_load(configfile,False))
{
printf("Error loading services.\n");
FILE *f;
struct connect_record crec;
+ if(!get_myname(myhostname,NULL))
+ {
+ printf("Failed to get my hostname.\n");
+ return;
+ }
+
if (!lp_load(servicesf,False)) {
printf("Can't load %s - run testparm to debug it\n", servicesf);
return;