*BSD News Article 10538


Return to BSD News archive

Received: by minnie.vk1xwt.ampr.org with NNTP
	id AA274 ; Sun, 31 Jan 93 14:00:42 EST
Newsgroups: comp.unix.bsd
Path: sserve!manuel.anu.edu.au!munnari.oz.au!sgiblab!swrinde!cs.utexas.edu!uunet!email!mbirgmei
From: mbirgmei@email.tuwien.ac.at (Martin BIRGMEIER)
Subject: Re: SYS_getdomainname error (using getdomainname patch)
Message-ID: <1993Jan29.075949.19503@email.tuwien.ac.at>
Summary: incomplete domainname patch
Keywords: domainname
Organization: Technical University of Vienna
References: <1ka4e3INNi4p@hrd769.brooks.af.mil>
Date: Fri, 29 Jan 1993 07:59:49 GMT
Lines: 196

In article <1ka4e3INNi4p@hrd769.brooks.af.mil> burgess@hrd769.brooks.af.mil (Dave Burgess) writes:
>  I have recently been trying to get the yellow pages (yp)  programs to work
>with 386bsd.  This involved implementing a getdomainname function in the
>kernel and in libc.a .
>
[...]
>
>  When does a SYS_* label get generated?  I can't find it in any of the
>sources.  Pointers would be REALLY appreciated at this point.

The domainname patch was posted in this article...

From: deraadt@newt.cuc.ab.ca (Theo de Raadt)
Subject: 386BSD: PATCH to add domainname(1)
Message-ID: <DERAADT.92Nov19025510@newt.newt.cuc.ab.ca>
Sender: news@newt.cuc.ab.ca
Organization: little lizard city
Date: Thu, 19 Nov 1992 09:55:10 GMT

.... and was incomplete. Here's how I changed it:

============================== cut here ==============================
*** /usr/src/sys.386bsd/kern/syscalls.c.DOMAIN_ORIG	Tue Dec 24 23:24:08 1991
--- /usr/src/sys.386bsd/kern/syscalls.c	Tue Jan  5 13:46:20 1993
***************
*** 193,200 ****
  	"#160",			/* 160 = nosys */
  	"#161",			/* 161 = nosys */
  #endif
! 	"#162",			/* 162 = nosys */
! 	"#163",			/* 163 = nosys */
  	"#164",			/* 164 = nosys */
  	"#165",			/* 165 = nosys */
  	"#166",			/* 166 = nosys */
--- 193,200 ----
  	"#160",			/* 160 = nosys */
  	"#161",			/* 161 = nosys */
  #endif
! 	"getdomainname",	/* 162 = getdomainname */
! 	"setdomainname",	/* 163 = setdomainname */
  	"#164",			/* 164 = nosys */
  	"#165",			/* 165 = nosys */
  	"#166",			/* 166 = nosys */
*** /usr/src/sys.386bsd/kern/kern_xxx.c.DOMAIN_ORIG	Tue Dec 24 23:24:08 1991
--- /usr/src/sys.386bsd/kern/kern_xxx.c	Tue Jan  5 13:46:20 1993
***************
*** 103,108 ****
--- 103,143 ----
  }
  
  /* ARGSUSED */
+ getdomainname(p, uap, retval)
+ 	struct proc *p;
+ 	struct args {
+ 		char	*domainname;
+ 		u_int	len;
+ 	} *uap;
+ 	int *retval;
+ {
+ 	if (uap->len > domainnamelen + 1)
+ 		uap->len = domainnamelen + 1;
+ 	return (copyout((caddr_t)domainname, (caddr_t)uap->domainname, uap->len));
+ }
+ 
+ /* ARGSUSED */
+ setdomainname(p, uap, retval)
+ 	struct proc *p;
+ 	struct args {
+ 		char	*domainname;
+ 		u_int	len;
+ 	} *uap;
+ 	int *retval;
+ {
+ 	int error;
+ 
+ 	if (error = suser(p->p_ucred, &p->p_acflag))
+ 		return (error);
+ 	if (uap->len > sizeof (domainname) - 1)
+ 		return EINVAL;
+ 	domainnamelen = uap->len;
+ 	error = copyin((caddr_t)uap->domainname, domainname, uap->len);
+ 	domainname[domainnamelen] = 0;
+ 	return (error);
+ }
+ 
+ /* ARGSUSED */
  reboot(p, uap, retval)
  	struct proc *p;
  	struct args {
*** /usr/src/sys.386bsd/kern/init_sysent.c.DOMAIN_ORIG	Tue Dec 24 23:24:07 1991
--- /usr/src/sys.386bsd/kern/init_sysent.c	Tue Jan  5 13:46:20 1993
***************
*** 158,163 ****
--- 158,165 ----
  int	getfh();
  #else
  #endif
+ int	getdomainname();
+ int	setdomainname();
  #ifdef SYSVSHM
  int	shmsys();
  #else
***************
*** 400,407 ****
  	0, nosys,			/* 160 = nosys */
  	0, nosys,			/* 161 = nosys */
  #endif
! 	0, nosys,			/* 162 = nosys */
! 	0, nosys,			/* 163 = nosys */
  	0, nosys,			/* 164 = nosys */
  	0, nosys,			/* 165 = nosys */
  	0, nosys,			/* 166 = nosys */
--- 402,409 ----
  	0, nosys,			/* 160 = nosys */
  	0, nosys,			/* 161 = nosys */
  #endif
! 	2, getdomainname,		/* 162 = getdomainname */
! 	2, setdomainname,		/* 163 = setdomainname */
  	0, nosys,			/* 164 = nosys */
  	0, nosys,			/* 165 = nosys */
  	0, nosys,			/* 166 = nosys */
*** /usr/src/sys.386bsd/sys/syscall.h.DOMAIN_ORIG	Tue Dec 24 23:24:18 1991
--- /usr/src/sys.386bsd/sys/syscall.h	Tue Jan  5 15:14:44 1993
***************
*** 160,165 ****
--- 160,167 ----
  #define	SYS_fstatfs	158
  #define	SYS_async_daemon	160
  #define	SYS_getfh	161
+ #define	SYS_getdomainname	162
+ #define	SYS_setdomainname	163
  #define	SYS_shmsys	171
  #define	SYS_setgid	181
  #define	SYS_setegid	182
*** /usr/src/sys.386bsd/sys/kernel.h.DOMAIN_ORIG	Tue Dec 24 23:24:17 1991
--- /usr/src/sys.386bsd/sys/kernel.h	Tue Jan  5 14:00:11 1993
***************
*** 40,45 ****
--- 40,47 ----
  long hostid;
  char hostname[MAXHOSTNAMELEN];
  int hostnamelen;
+ char domainname[MAXHOSTNAMELEN];
+ int domainnamelen;
  
  /* 1.2 */
  struct timeval boottime;
*** /usr/src/lib/libc/sys/Makefile.inc.DOMAIN_ORIG	Thu Feb 13 08:42:58 1992
--- /usr/src/lib/libc/sys/Makefile.inc	Tue Jan  5 13:44:12 1993
***************
*** 27,33 ****
  	setrlimit.o setsid.o setsockopt.o settimeofday.o setuid.o \
  	shutdown.o sigaction.o sigstack.o socket.o socketpair.o stat.o \
  	statfs.o swapon.o symlink.o sync.o truncate.o umask.o unlink.o \
! 	unmount.o utimes.o vadvise.o wait4.o write.o writev.o
  
  PSEUDO=	_exit.o _getlogin.o
  
--- 27,34 ----
  	setrlimit.o setsid.o setsockopt.o settimeofday.o setuid.o \
  	shutdown.o sigaction.o sigstack.o socket.o socketpair.o stat.o \
  	statfs.o swapon.o symlink.o sync.o truncate.o umask.o unlink.o \
! 	unmount.o utimes.o vadvise.o wait4.o write.o writev.o getdomainname.o \
! 	setdomainname.o
  
  PSEUDO=	_exit.o _getlogin.o
  
***************
*** 80,86 ****
  	shutdown.0 sigaction.0 sigprocmask.0 sigreturn.0 sigstack.0 \
  	sigsuspend.0 socket.0 socketpair.0 stat.0 statfs.0 swapon.0 \
  	symlink.0 sync.0 syscall.0 truncate.0 umask.0 unlink.0 utimes.0 \
! 	vfork.0 wait.0 write.0
  
  MLINKS+=brk.2 sbrk.2
  MLINKS+=dup.2 dup2.2
--- 81,87 ----
  	shutdown.0 sigaction.0 sigprocmask.0 sigreturn.0 sigstack.0 \
  	sigsuspend.0 socket.0 socketpair.0 stat.0 statfs.0 swapon.0 \
  	symlink.0 sync.0 syscall.0 truncate.0 umask.0 unlink.0 utimes.0 \
! 	vfork.0 wait.0 write.0 getdomainname.0
  
  MLINKS+=brk.2 sbrk.2
  MLINKS+=dup.2 dup2.2
***************
*** 110,112 ****
--- 111,114 ----
  MLINKS+=truncate.2 ftruncate.2
  MLINKS+=wait.2 wait3.2 wait.2 wait4.2 wait.2 waitpid.2
  MLINKS+=write.2 writev.2
+ MLINKS+=getdomainname.2 setdomainname.2
============================== cut here ==============================

Hope this helps,

Martin