- if(gateway)
- {
- if (gethostname(gateway, 256) < 0) {
- fprintf(stderr,"%s: unable to get gateway host name\n",argv[0]);
- exit(2);
- }
- if ((hp = gethostbyname(gateway)) == NULL) {
- fprintf(stderr,"%s: unable to get gateway host address\n",argv[0]);
- exit(2);
- }
- nfs_diskless.mygateway.sa_len = sizeof(struct sockaddr);
- nfs_diskless.mygateway.sa_family = AF_INET;
- nfs_diskless.mygateway.sa_data[0] = NFS_SOCKET >> 8;
- nfs_diskless.mygateway.sa_data[1] = NFS_SOCKET & 0x00FF;
- bcopy(*hp->h_addr_list, &nfs_diskless.mygateway.sa_data[2], 4);
+
+ if (!*servername && gethostname(servername, sizeof servername) < 0) {
+ fprintf(stderr,"%s: unable to get host server name\n",argv[0]);
+ exit(2);
+ }
+ if ((hp = gethostbyname(servername)) == NULL) {
+ fprintf(stderr,"%s: unable to get host address\n",argv[0]);
+ exit(2);
+ }
+ p = servername;
+ while (*p && (*p != '.')) p++;
+ *p = 0;
+ nfs_diskless.swap_saddr.sa_data[0] = nfs_diskless.root_saddr.sa_data[0]
+ = NFS_SOCKET >> 8;
+ nfs_diskless.swap_saddr.sa_data[1] = nfs_diskless.root_saddr.sa_data[1]
+ = NFS_SOCKET & 0x00FF;
+ bcopy(*hp->h_addr_list, &nfs_diskless.swap_saddr.sa_data[2], 4);
+ bcopy(*hp->h_addr_list, &nfs_diskless.root_saddr.sa_data[2], 4);
+
+ if (!*gateway && gethostname(gateway, sizeof gateway) < 0) {
+ fprintf(stderr,"%s: unable to get gateway host name\n",argv[0]);
+ exit(2);