Skip to content
Snippets Groups Projects
Commit 136555ed authored by Guy Zana's avatar Guy Zana
Browse files

Port uipc_domain

parent d6eba3a1
No related branches found
No related tags found
No related merge requests found
...@@ -10,3 +10,8 @@ int _callout_stop_safe(struct callout *a, int b) ...@@ -10,3 +10,8 @@ int _callout_stop_safe(struct callout *a, int b)
{ {
return 1; return 1;
} }
void callout_init(struct callout *a, int v)
{
}
#include <porting/netport.h> #include <errno.h>
#include <memory.h> #include <memory.h>
#include <porting/netport.h>
#include <sys/socket.h>
#include <net/if_var.h>
int copyin(const void *uaddr, void *kaddr, size_t len) int copyin(const void *uaddr, void *kaddr, size_t len)
{ {
memcpy(kaddr, uaddr, len); memcpy(kaddr, uaddr, len);
...@@ -30,3 +34,145 @@ int priv_check(struct thread *td, int priv) ...@@ -30,3 +34,145 @@ int priv_check(struct thread *td, int priv)
{ {
return 1; return 1;
} }
/*
* Some routines that return EOPNOTSUPP for entry points that are not
* supported by a protocol. Fill in as needed.
*/
int
pru_accept_notsupp(struct socket *so, struct sockaddr **nam)
{
return EOPNOTSUPP;
}
int
pru_attach_notsupp(struct socket *so, int proto, struct thread *td)
{
return EOPNOTSUPP;
}
int
pru_bind_notsupp(struct socket *so, struct sockaddr *nam, struct thread *td)
{
return EOPNOTSUPP;
}
int
pru_connect_notsupp(struct socket *so, struct sockaddr *nam, struct thread *td)
{
return EOPNOTSUPP;
}
int
pru_connect2_notsupp(struct socket *so1, struct socket *so2)
{
return EOPNOTSUPP;
}
int
pru_control_notsupp(struct socket *so, u_long cmd, caddr_t data,
struct ifnet *ifp, struct thread *td)
{
return EOPNOTSUPP;
}
int
pru_disconnect_notsupp(struct socket *so)
{
return EOPNOTSUPP;
}
int
pru_listen_notsupp(struct socket *so, int backlog, struct thread *td)
{
return EOPNOTSUPP;
}
int
pru_peeraddr_notsupp(struct socket *so, struct sockaddr **nam)
{
return EOPNOTSUPP;
}
int
pru_rcvd_notsupp(struct socket *so, int flags)
{
return EOPNOTSUPP;
}
int
pru_rcvoob_notsupp(struct socket *so, struct mbuf *m, int flags)
{
return EOPNOTSUPP;
}
int
pru_send_notsupp(struct socket *so, int flags, struct mbuf *m,
struct sockaddr *addr, struct mbuf *control, struct thread *td)
{
return EOPNOTSUPP;
}
/*
* This isn't really a ``null'' operation, but it's the default one and
* doesn't do anything destructive.
*/
struct stat;
int
pru_sense_null(struct socket *so, struct stat *sb)
{
// sb->st_blksize = so->so_snd.sb_hiwat;
return 0;
}
int
pru_shutdown_notsupp(struct socket *so)
{
return EOPNOTSUPP;
}
int
pru_sockaddr_notsupp(struct socket *so, struct sockaddr **nam)
{
return EOPNOTSUPP;
}
int
pru_sosend_notsupp(struct socket *so, struct sockaddr *addr, struct uio *uio,
struct mbuf *top, struct mbuf *control, int flags, struct thread *td)
{
return EOPNOTSUPP;
}
int
pru_soreceive_notsupp(struct socket *so, struct sockaddr **paddr,
struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp)
{
return EOPNOTSUPP;
}
int
pru_sopoll_notsupp(struct socket *so, int events, struct ucred *cred,
struct thread *td)
{
return EOPNOTSUPP;
}
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/queue.h> #include <sys/queue.h>
/* Defines how many ticks are in 1 minute */
#ifndef hz
#define hz (1)
#endif
#define __NO_STRICT_ALIGNMENT #define __NO_STRICT_ALIGNMENT
/* FIXME: struct socket is here for compilation purposes only */ /* FIXME: struct socket is here for compilation purposes only */
......
...@@ -29,8 +29,11 @@ ...@@ -29,8 +29,11 @@
* @(#)uipc_domain.c 8.2 (Berkeley) 10/18/93 * @(#)uipc_domain.c 8.2 (Berkeley) 10/18/93
*/ */
#include <errno.h>
#include <porting/netport.h>
#include <porting/uma_stub.h>
#include <porting/callout.h>
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h> #include <sys/param.h>
#include <sys/socket.h> #include <sys/socket.h>
...@@ -38,15 +41,9 @@ __FBSDID("$FreeBSD$"); ...@@ -38,15 +41,9 @@ __FBSDID("$FreeBSD$");
#include <sys/domain.h> #include <sys/domain.h>
#include <sys/eventhandler.h> #include <sys/eventhandler.h>
#include <sys/mbuf.h> #include <sys/mbuf.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/socketvar.h>
#include <sys/systm.h>
#include <net/vnet.h> #include <net/vnet.h>
#include <vm/uma.h>
/* /*
* System initialization * System initialization
...@@ -60,12 +57,17 @@ __FBSDID("$FreeBSD$"); ...@@ -60,12 +57,17 @@ __FBSDID("$FreeBSD$");
* See DOMAIN_SET(9) for details on its use. * See DOMAIN_SET(9) for details on its use.
*/ */
#if 0
static void domaininit(void *); static void domaininit(void *);
SYSINIT(domain, SI_SUB_PROTO_DOMAININIT, SI_ORDER_ANY, domaininit, NULL); SYSINIT(domain, SI_SUB_PROTO_DOMAININIT, SI_ORDER_ANY, domaininit, NULL);
static void domainfinalize(void *); static void domainfinalize(void *);
SYSINIT(domainfin, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_FIRST, domainfinalize, SYSINIT(domainfin, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_FIRST, domainfinalize,
NULL); NULL);
#else
void domaininit(void *);
void domainfinalize(void *);
#endif
static struct callout pffast_callout; static struct callout pffast_callout;
static struct callout pfslow_callout; static struct callout pfslow_callout;
...@@ -76,7 +78,8 @@ static void pfslowtimo(void *); ...@@ -76,7 +78,8 @@ static void pfslowtimo(void *);
struct domain *domains; /* registered protocol domains */ struct domain *domains; /* registered protocol domains */
int domain_init_status = 0; int domain_init_status = 0;
static struct mtx dom_mtx; /* domain list lock */ static struct mtx dom_mtx; /* domain list lock */
MTX_SYSINIT(domain, &dom_mtx, "domain list", MTX_DEF); /* FIXME: OSv: initialize this mutex properly... */
// MTX_SYSINIT(domain, &dom_mtx, "domain list", MTX_DEF);
/* /*
* Dummy protocol specific user requests function pointer array. * Dummy protocol specific user requests function pointer array.
...@@ -149,9 +152,10 @@ protosw_init(struct protosw *pr) ...@@ -149,9 +152,10 @@ protosw_init(struct protosw *pr)
DEFAULT(pu->pru_sense, pru_sense_null); DEFAULT(pu->pru_sense, pru_sense_null);
DEFAULT(pu->pru_shutdown, pru_shutdown_notsupp); DEFAULT(pu->pru_shutdown, pru_shutdown_notsupp);
DEFAULT(pu->pru_sockaddr, pru_sockaddr_notsupp); DEFAULT(pu->pru_sockaddr, pru_sockaddr_notsupp);
DEFAULT(pu->pru_sosend, sosend_generic); /* FIXME: OSv: uncomment this */
DEFAULT(pu->pru_soreceive, soreceive_generic); // DEFAULT(pu->pru_sosend, sosend_generic);
DEFAULT(pu->pru_sopoll, sopoll_generic); // DEFAULT(pu->pru_soreceive, soreceive_generic);
// DEFAULT(pu->pru_sopoll, sopoll_generic);
#undef DEFAULT #undef DEFAULT
if (pr->pr_init) if (pr->pr_init)
(*pr->pr_init)(); (*pr->pr_init)();
...@@ -239,6 +243,10 @@ domain_add(void *data) ...@@ -239,6 +243,10 @@ domain_add(void *data)
mtx_unlock(&dom_mtx); mtx_unlock(&dom_mtx);
} }
/* FIXME: OSv: this was initially declared in uipc_socket */
uma_zone_t socket_zone;
int maxsockets = 256;
static void static void
socket_zone_change(void *tag) socket_zone_change(void *tag)
{ {
...@@ -247,7 +255,7 @@ socket_zone_change(void *tag) ...@@ -247,7 +255,7 @@ socket_zone_change(void *tag)
} }
/* ARGSUSED*/ /* ARGSUSED*/
static void void
domaininit(void *dummy) domaininit(void *dummy)
{ {
...@@ -274,7 +282,7 @@ domaininit(void *dummy) ...@@ -274,7 +282,7 @@ domaininit(void *dummy)
} }
/* ARGSUSED*/ /* ARGSUSED*/
static void void
domainfinalize(void *dummy) domainfinalize(void *dummy)
{ {
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#define _NET_IF_VAR_H_ #define _NET_IF_VAR_H_
#include <osv/mutex.h> #include <osv/mutex.h>
#include <net/if.h>
/* /*
* Structures defining a network interface, providing a packet * Structures defining a network interface, providing a packet
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment