Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

fstat(2) fails on AF_LINK socket descriptor


I have some code that tries to detect file type given a descriptor by
using fstat(2) ... and do some specific stuff accordingly, and
specifically for socket descriptors.

It mostly works, except for AF_LINK socket descriptor where fstat(2)
fails with EOPNOTSUPP. Like with the attached sample code.

Looking at the code in src/sys/net/link_proto.c confirms that
behavior :

static int
link_stat(struct socket *so, struct stat *ub)

        return EOPNOTSUPP;

But this is an exception as all other stat functions returns 0 instead

Any specific reason for this one ?


Nicolas Joly

Cluster & Computing Group
Biology IT Center
Institut Pasteur, Paris.
#include <sys/socket.h>
#include <sys/stat.h>

#include <assert.h>
#include <unistd.h>

int main() {
  int res, fd;
  struct stat st;

  fd = socket(AF_LINK, SOCK_DGRAM, 0);
  assert(fd != -1);
  res = fstat(fd, &st);
  assert(res != -1);
  assert(S_ISSOCK(st.st_mode) != 0);
  assert(close(fd) != -1);

  return 0; }

Home | Main Index | Thread Index | Old Index