James Morrison <[EMAIL PROTECTED]> writes:

>  Off the current topic I've been looking at the symlink server
> recently and there are two mach_port_t 's that I noticed.  One is
> realnode and the other is realnodenoauth.  What is the difference
> between these port_t's.

realnode comes from the fsys_startup() call:

  error =
    fsys_startup (bootstrap, 0, control, MACH_MSG_TYPE_COPY_SEND, &realnode);
  [0]

realnodenoauth is like realnode, but without any associated [UG]IDs:

  io_restrict_auth (realnode, &realnodenoauth, 0, 0, 0, 0);
  [1]

realnode isn't used any more:

  mach_port_deallocate (mach_task_self (), realnode);

realnodenoauth gets returned to O_NOLINK lookups:

  if (flags & O_NOLINK)
    {
      /* Return our underlying node. */
      *ret = realnodenoauth;

[0] hurd/fsys.defs:

/* Sent by filesystem on its bootstrap port upon startup.
   REALNODE is the node this filesystem is the translator for,
   opened with flags FLAGS (O_NOTRANS is assumed even if not
   provided). */
routine fsys_startup (
        bootstrap: mach_port_t;
        RPT
        openflags: int;
        control_port: mach_port_send_t;
        out realnode: mach_port_send_t);

[1] hurd/io.defs:

/* Return another port which has been restricted to do only those
   things which both the current user and the newly specified user can
   do.  */
routine io_restrict_auth (
        io_object: io_t;
        RPT
        out new_object: mach_port_send_t;
        uids: idarray_t SCP;
        gids: idarray_t SCP);

        hth,
        moritz
-- 
Moritz Schulte <[EMAIL PROTECTED]> http://www.chaosdorf.de/moritz/
Debian/GNU supporter - http://www.debian.org/ http://www.gnu.org/
GPG fingerprint = 3A14 3923 15BE FD57 FC06  B501 0841 2D7B 6F98 4199

_______________________________________________
Bug-hurd mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-hurd

Reply via email to