Beispiel #1
0
void
setup () 
{
  int dgram_fd = inetsocket (SOCK_DGRAM);
  if (dgram_fd < 0) fatal << "Failed to allocate dgram socket\n";
  dgram_xprt = axprt_dgram::alloc (dgram_fd, sizeof(sockaddr), 230000);
  if (!dgram_xprt) fatal << "Failed to allocate dgram xprt\n";
}
Beispiel #2
0
void
merkle_disk_server::init_listen (int port)
{
    // listen on unix domain socket for sampled requests
    int tcp_fd = inetsocket (SOCK_STREAM, port);
    if (tcp_fd < 0) {
        fatal << "Error creating client socket (TCP) " << strerror (errno) << "\n";
    }
    client_listen (tcp_fd);
}
Beispiel #3
0
 bool
 net_acceptor_t::init () 
 {
   bool ret = true;
   _fd = inetsocket (SOCK_STREAM, _port, _addr);
   if (_fd < 0) {
     str s = addr_s ();
     warn ("failed to bind to %s: %m\n", s.cstr ());
     ret = false;
   }
   return ret;
 }
Beispiel #4
0
rpc_manager::rpc_manager (ptr<u_int32_t> _nrcv)
  : a_lat (0.0),
    a_var (0.0),
    c_err (0.0),
    c_err_rel (0.0),
    c_var (0.0),
    nrpc (0), nrpcfailed (0), nsent (0), npending (0), nrcv (_nrcv)
{
  warn << "CREATED RPC MANAGER\n";
  int dgram_fd = inetsocket (SOCK_DGRAM);
  if (dgram_fd < 0) fatal << "Failed to allocate dgram socket\n";
  dgram_xprt = axprt_dgram::alloc (dgram_fd, sizeof(sockaddr), 230000);
  if (!dgram_xprt) fatal << "Failed to allocate dgram xprt\n";

  next_xid = &random_getword;
}
Beispiel #5
0
void
afs_init (cbv cb)
{
  tzset ();
  sfs_hosttab_init ();

  afsnode::sbp2aid = sbp2aid;

  afs_root = afsroot::alloc ();
  afs_root.Xleak ();		// Avoid global destruction order worries
  afs_sfsroot = afsusrdir::alloc (afs_root, sfsaid_sfs);
  afs_sfsroot.Xleak ();
  afs_naroot = afsusrroot::alloc (afs_root, sfsaid_nobody);
  afs_naroot.Xleak ();

  afs_mnt = afs_root->mkdir (".mnt");
  afs_wait = afsdir::alloc ();
  afs_wait.Xleak ();

  afs_mnt->mkdir ("wait");
  afs_sfsroot->link (afsreg::alloc (), ".root");
  afs_root->link (afsreg::alloc (VERSION "\n"), ".version");
  afs_root->link (afsreg::alloc (strbuf ("%d\n", int (getpid ()))), ".pid");
#if FIX_MNTPOINT
  if (opt_fix_mntpoint)
    afs_linuxbug = afs_root->mkdir (".linuxmnt");
#endif /* FIX_MNTPOINT */

  afsfd = inetsocket (SOCK_DGRAM, nomounting ? 2490 : 0, INADDR_LOOPBACK);
  if (afsfd < 0)
    fatal ("afs_init: inetsocket: %m\n");
  ref<axprt> x (axprt_dgram::alloc (afsfd));
  afssrv = asrv::alloc (x, nfs_program_2, wrap (afs_dispatch));
  afssrv3 = asrv::alloc (x, nfs_program_3, wrap (afs_dispatch));

  sigcb (SIGINT, wrap (afs_shutdown, true));
  sigcb (SIGTERM, wrap (afs_shutdown, true));

  nfs_fh fh;
  afs_root->mkfh (&fh);
  mnt_mount (dup (afsfd), "(sfs)", sfsroot,
	     v3flag | NMOPT_NOAC | NMOPT_SOFT,
	     nfs_fh2tobytes (fh), wrap (afs_init2, cb));
}
Beispiel #6
0
bool
sfssd_slave_axprt (sfsserv_axprt_cb cb, bool allowstandalone, u_int port)
{
  if (!port)
    port = SFS_PORT;
  if (cloneserv (0, wrap (sfs_accept, true, cb)))
    return true;
  else if (!allowstandalone) {
    warn ("No sfssd detected.\n");
    return true;
  }
  warn ("No sfssd detected, running in standalone mode.\n");
  int sfssfd = inetsocket (SOCK_STREAM, port);
  if (sfssfd < 0)
    return false;
  close_on_exec (sfssfd);
  listen (sfssfd, 5);
  fdcb (sfssfd, selread, wrap (sfs_accept_standalone, cb, sfssfd));
  return true;
}
Beispiel #7
0
// Listen for connections
void
net::tcp_listen(int port, cbsb cb)
{
  int ret;
  int tmp_socket;

  // Init socket bound to port
  tmp_socket = inetsocket(SOCK_STREAM, port);
  check_ret(tmp_socket, "inetsocket()");
  
  // Make fd asynchronous
  make_async(tmp_socket);
  
  // Listen for a connection
  ret = listen(tmp_socket, LISTEN_BACKLOG);
  check_ret(ret, "listen()");

  // Schedule event to accept incoming connection 
  fdcb(tmp_socket, selread, wrap(this, &net::tcp_accept, tmp_socket, cb));
}
Beispiel #8
0
int
chord::initxprt (int myp, int type, int *fd)
{
  in_addr my_addr;
  inet_aton (myname.cstr (), &my_addr);
  *fd = inetsocket (type, myp, ntohl (my_addr.s_addr));
  if (*fd < 0)
    fatal ("binding %s addr %s port %d: %m\n",
	   (type == SOCK_DGRAM ? "UDP" : "TCP"), myname.cstr (), myp);
  
  if (myp == 0) {
    struct sockaddr_in addr;
    socklen_t len = sizeof (addr);
    bzero (&addr, sizeof (addr));
    if (getsockname (*fd, (sockaddr *) &addr, &len) < 0) 
      fatal ("getsockname failed %m\n");
    myp = ntohs (addr.sin_port);
  }
  return myp;
}
static void
dolisten ()
{
  for (sockaddr **sp = listenaddrs.base (); sp < listenaddrs.lim (); sp++) {
    sockaddr_in *sinp = reinterpret_cast<sockaddr_in *> (*sp);
    int fd = inetsocket (SOCK_STREAM, ntohs (sinp->sin_port),
			 ntohl (sinp->sin_addr.s_addr));
    if (fd < 0)
      warn ("could not bind TCP port %d: %m\n", ntohs (sinp->sin_port));
    else {
      if (sinp->sin_addr.s_addr == htonl (INADDR_ANY))
	warn ("listening on TCP port %d\n", ntohs (sinp->sin_port));
      else
	warn ("listening on %s TCP port %d\n",
	      inet_ntoa (sinp->sin_addr), ntohs (sinp->sin_port));
      listeners.push_back (New refcounted<listener> (fd));
    }
  }

  if (listeners.empty ())
    fatal ("no TCP ports to listen on\n");

  hup_lock = false;
}