The proto API is a general purpose API, so don't use 'hast' in structures or
function names. It can now be used outside of HAST. MFC after: 1 week
This commit is contained in:
parent
1198947acd
commit
e2eabb44d7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=219873
@ -20,6 +20,7 @@ SRCS+= y.tab.h
|
||||
MAN= hastd.8 hast.conf.5
|
||||
|
||||
NO_WFORMAT=
|
||||
CFLAGS+=-DPROTO_TCP4_DEFAULT_PORT=8457
|
||||
CFLAGS+=-I${.CURDIR}
|
||||
CFLAGS+=-DINET
|
||||
.if ${MK_INET6_SUPPORT} != "no"
|
||||
|
@ -86,7 +86,6 @@
|
||||
#define HAST_TIMEOUT 5
|
||||
#define HAST_CONFIG "/etc/hast.conf"
|
||||
#define HAST_CONTROL "/var/run/hastctl"
|
||||
#define HASTD_PORT 8457
|
||||
#define HASTD_LISTEN "tcp4://0.0.0.0:8457"
|
||||
#define HASTD_PIDFILE "/var/run/hastd.pid"
|
||||
|
||||
|
@ -45,33 +45,33 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#define PROTO_CONN_MAGIC 0x907041c
|
||||
struct proto_conn {
|
||||
int pc_magic;
|
||||
struct hast_proto *pc_proto;
|
||||
void *pc_ctx;
|
||||
int pc_side;
|
||||
int pc_magic;
|
||||
struct proto *pc_proto;
|
||||
void *pc_ctx;
|
||||
int pc_side;
|
||||
#define PROTO_SIDE_CLIENT 0
|
||||
#define PROTO_SIDE_SERVER_LISTEN 1
|
||||
#define PROTO_SIDE_SERVER_WORK 2
|
||||
};
|
||||
|
||||
static TAILQ_HEAD(, hast_proto) protos = TAILQ_HEAD_INITIALIZER(protos);
|
||||
static TAILQ_HEAD(, proto) protos = TAILQ_HEAD_INITIALIZER(protos);
|
||||
|
||||
void
|
||||
proto_register(struct hast_proto *proto, bool isdefault)
|
||||
proto_register(struct proto *proto, bool isdefault)
|
||||
{
|
||||
static bool seen_default = false;
|
||||
|
||||
if (!isdefault)
|
||||
TAILQ_INSERT_HEAD(&protos, proto, hp_next);
|
||||
TAILQ_INSERT_HEAD(&protos, proto, prt_next);
|
||||
else {
|
||||
PJDLOG_ASSERT(!seen_default);
|
||||
seen_default = true;
|
||||
TAILQ_INSERT_TAIL(&protos, proto, hp_next);
|
||||
TAILQ_INSERT_TAIL(&protos, proto, prt_next);
|
||||
}
|
||||
}
|
||||
|
||||
static struct proto_conn *
|
||||
proto_alloc(struct hast_proto *proto, int side)
|
||||
proto_alloc(struct proto *proto, int side)
|
||||
{
|
||||
struct proto_conn *conn;
|
||||
|
||||
@ -108,7 +108,7 @@ static int
|
||||
proto_common_setup(const char *srcaddr, const char *dstaddr,
|
||||
struct proto_conn **connp, int side)
|
||||
{
|
||||
struct hast_proto *proto;
|
||||
struct proto *proto;
|
||||
struct proto_conn *conn;
|
||||
void *ctx;
|
||||
int ret;
|
||||
@ -116,17 +116,17 @@ proto_common_setup(const char *srcaddr, const char *dstaddr,
|
||||
PJDLOG_ASSERT(side == PROTO_SIDE_CLIENT ||
|
||||
side == PROTO_SIDE_SERVER_LISTEN);
|
||||
|
||||
TAILQ_FOREACH(proto, &protos, hp_next) {
|
||||
TAILQ_FOREACH(proto, &protos, prt_next) {
|
||||
if (side == PROTO_SIDE_CLIENT) {
|
||||
if (proto->hp_client == NULL)
|
||||
if (proto->prt_client == NULL)
|
||||
ret = -1;
|
||||
else
|
||||
ret = proto->hp_client(srcaddr, dstaddr, &ctx);
|
||||
ret = proto->prt_client(srcaddr, dstaddr, &ctx);
|
||||
} else /* if (side == PROTO_SIDE_SERVER_LISTEN) */ {
|
||||
if (proto->hp_server == NULL)
|
||||
if (proto->prt_server == NULL)
|
||||
ret = -1;
|
||||
else
|
||||
ret = proto->hp_server(dstaddr, &ctx);
|
||||
ret = proto->prt_server(dstaddr, &ctx);
|
||||
}
|
||||
/*
|
||||
* ret == 0 - success
|
||||
@ -148,8 +148,8 @@ proto_common_setup(const char *srcaddr, const char *dstaddr,
|
||||
}
|
||||
conn = proto_alloc(proto, side);
|
||||
if (conn == NULL) {
|
||||
if (proto->hp_close != NULL)
|
||||
proto->hp_close(ctx);
|
||||
if (proto->prt_close != NULL)
|
||||
proto->prt_close(ctx);
|
||||
errno = ENOMEM;
|
||||
return (-1);
|
||||
}
|
||||
@ -176,10 +176,10 @@ proto_connect(struct proto_conn *conn, int timeout)
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_side == PROTO_SIDE_CLIENT);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_connect != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_connect != NULL);
|
||||
PJDLOG_ASSERT(timeout >= -1);
|
||||
|
||||
ret = conn->pc_proto->hp_connect(conn->pc_ctx, timeout);
|
||||
ret = conn->pc_proto->prt_connect(conn->pc_ctx, timeout);
|
||||
if (ret != 0) {
|
||||
errno = ret;
|
||||
return (-1);
|
||||
@ -197,10 +197,10 @@ proto_connect_wait(struct proto_conn *conn, int timeout)
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_side == PROTO_SIDE_CLIENT);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_connect_wait != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_connect_wait != NULL);
|
||||
PJDLOG_ASSERT(timeout >= 0);
|
||||
|
||||
ret = conn->pc_proto->hp_connect_wait(conn->pc_ctx, timeout);
|
||||
ret = conn->pc_proto->prt_connect_wait(conn->pc_ctx, timeout);
|
||||
if (ret != 0) {
|
||||
errno = ret;
|
||||
return (-1);
|
||||
@ -226,13 +226,13 @@ proto_accept(struct proto_conn *conn, struct proto_conn **newconnp)
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_side == PROTO_SIDE_SERVER_LISTEN);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_accept != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_accept != NULL);
|
||||
|
||||
newconn = proto_alloc(conn->pc_proto, PROTO_SIDE_SERVER_WORK);
|
||||
if (newconn == NULL)
|
||||
return (-1);
|
||||
|
||||
ret = conn->pc_proto->hp_accept(conn->pc_ctx, &newconn->pc_ctx);
|
||||
ret = conn->pc_proto->prt_accept(conn->pc_ctx, &newconn->pc_ctx);
|
||||
if (ret != 0) {
|
||||
proto_free(newconn);
|
||||
errno = ret;
|
||||
@ -252,9 +252,9 @@ proto_send(const struct proto_conn *conn, const void *data, size_t size)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_send != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_send != NULL);
|
||||
|
||||
ret = conn->pc_proto->hp_send(conn->pc_ctx, data, size, -1);
|
||||
ret = conn->pc_proto->prt_send(conn->pc_ctx, data, size, -1);
|
||||
if (ret != 0) {
|
||||
errno = ret;
|
||||
return (-1);
|
||||
@ -270,9 +270,9 @@ proto_recv(const struct proto_conn *conn, void *data, size_t size)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_recv != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_recv != NULL);
|
||||
|
||||
ret = conn->pc_proto->hp_recv(conn->pc_ctx, data, size, NULL);
|
||||
ret = conn->pc_proto->prt_recv(conn->pc_ctx, data, size, NULL);
|
||||
if (ret != 0) {
|
||||
errno = ret;
|
||||
return (-1);
|
||||
@ -289,16 +289,16 @@ proto_connection_send(const struct proto_conn *conn, struct proto_conn *mconn)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_send != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_send != NULL);
|
||||
PJDLOG_ASSERT(mconn != NULL);
|
||||
PJDLOG_ASSERT(mconn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(mconn->pc_proto != NULL);
|
||||
fd = proto_descriptor(mconn);
|
||||
PJDLOG_ASSERT(fd >= 0);
|
||||
protoname = mconn->pc_proto->hp_name;
|
||||
protoname = mconn->pc_proto->prt_name;
|
||||
PJDLOG_ASSERT(protoname != NULL);
|
||||
|
||||
ret = conn->pc_proto->hp_send(conn->pc_ctx, protoname,
|
||||
ret = conn->pc_proto->prt_send(conn->pc_ctx, protoname,
|
||||
strlen(protoname) + 1, fd);
|
||||
proto_close(mconn);
|
||||
if (ret != 0) {
|
||||
@ -313,19 +313,19 @@ proto_connection_recv(const struct proto_conn *conn, bool client,
|
||||
struct proto_conn **newconnp)
|
||||
{
|
||||
char protoname[128];
|
||||
struct hast_proto *proto;
|
||||
struct proto *proto;
|
||||
struct proto_conn *newconn;
|
||||
int ret, fd;
|
||||
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_recv != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_recv != NULL);
|
||||
PJDLOG_ASSERT(newconnp != NULL);
|
||||
|
||||
bzero(protoname, sizeof(protoname));
|
||||
|
||||
ret = conn->pc_proto->hp_recv(conn->pc_ctx, protoname,
|
||||
ret = conn->pc_proto->prt_recv(conn->pc_ctx, protoname,
|
||||
sizeof(protoname) - 1, &fd);
|
||||
if (ret != 0) {
|
||||
errno = ret;
|
||||
@ -334,8 +334,8 @@ proto_connection_recv(const struct proto_conn *conn, bool client,
|
||||
|
||||
PJDLOG_ASSERT(fd >= 0);
|
||||
|
||||
TAILQ_FOREACH(proto, &protos, hp_next) {
|
||||
if (strcmp(proto->hp_name, protoname) == 0)
|
||||
TAILQ_FOREACH(proto, &protos, prt_next) {
|
||||
if (strcmp(proto->prt_name, protoname) == 0)
|
||||
break;
|
||||
}
|
||||
if (proto == NULL) {
|
||||
@ -347,8 +347,8 @@ proto_connection_recv(const struct proto_conn *conn, bool client,
|
||||
client ? PROTO_SIDE_CLIENT : PROTO_SIDE_SERVER_WORK);
|
||||
if (newconn == NULL)
|
||||
return (-1);
|
||||
PJDLOG_ASSERT(newconn->pc_proto->hp_wrap != NULL);
|
||||
ret = newconn->pc_proto->hp_wrap(fd, client, &newconn->pc_ctx);
|
||||
PJDLOG_ASSERT(newconn->pc_proto->prt_wrap != NULL);
|
||||
ret = newconn->pc_proto->prt_wrap(fd, client, &newconn->pc_ctx);
|
||||
if (ret != 0) {
|
||||
proto_free(newconn);
|
||||
errno = ret;
|
||||
@ -367,9 +367,9 @@ proto_descriptor(const struct proto_conn *conn)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_descriptor != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_descriptor != NULL);
|
||||
|
||||
return (conn->pc_proto->hp_descriptor(conn->pc_ctx));
|
||||
return (conn->pc_proto->prt_descriptor(conn->pc_ctx));
|
||||
}
|
||||
|
||||
bool
|
||||
@ -379,9 +379,9 @@ proto_address_match(const struct proto_conn *conn, const char *addr)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_address_match != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_address_match != NULL);
|
||||
|
||||
return (conn->pc_proto->hp_address_match(conn->pc_ctx, addr));
|
||||
return (conn->pc_proto->prt_address_match(conn->pc_ctx, addr));
|
||||
}
|
||||
|
||||
void
|
||||
@ -391,9 +391,9 @@ proto_local_address(const struct proto_conn *conn, char *addr, size_t size)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_local_address != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_local_address != NULL);
|
||||
|
||||
conn->pc_proto->hp_local_address(conn->pc_ctx, addr, size);
|
||||
conn->pc_proto->prt_local_address(conn->pc_ctx, addr, size);
|
||||
}
|
||||
|
||||
void
|
||||
@ -403,9 +403,9 @@ proto_remote_address(const struct proto_conn *conn, char *addr, size_t size)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_remote_address != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_remote_address != NULL);
|
||||
|
||||
conn->pc_proto->hp_remote_address(conn->pc_ctx, addr, size);
|
||||
conn->pc_proto->prt_remote_address(conn->pc_ctx, addr, size);
|
||||
}
|
||||
|
||||
int
|
||||
@ -439,8 +439,8 @@ proto_close(struct proto_conn *conn)
|
||||
PJDLOG_ASSERT(conn != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
|
||||
PJDLOG_ASSERT(conn->pc_proto != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->hp_close != NULL);
|
||||
PJDLOG_ASSERT(conn->pc_proto->prt_close != NULL);
|
||||
|
||||
conn->pc_proto->hp_close(conn->pc_ctx);
|
||||
conn->pc_proto->prt_close(conn->pc_ctx);
|
||||
proto_free(conn);
|
||||
}
|
||||
|
@ -39,39 +39,39 @@
|
||||
|
||||
#define __constructor __attribute__((constructor))
|
||||
|
||||
typedef int hp_client_t(const char *, const char *, void **);
|
||||
typedef int hp_connect_t(void *, int);
|
||||
typedef int hp_connect_wait_t(void *, int);
|
||||
typedef int hp_server_t(const char *, void **);
|
||||
typedef int hp_accept_t(void *, void **);
|
||||
typedef int hp_wrap_t(int, bool, void **);
|
||||
typedef int hp_send_t(void *, const unsigned char *, size_t, int);
|
||||
typedef int hp_recv_t(void *, unsigned char *, size_t, int *);
|
||||
typedef int hp_descriptor_t(const void *);
|
||||
typedef bool hp_address_match_t(const void *, const char *);
|
||||
typedef void hp_local_address_t(const void *, char *, size_t);
|
||||
typedef void hp_remote_address_t(const void *, char *, size_t);
|
||||
typedef void hp_close_t(void *);
|
||||
typedef int prt_client_t(const char *, const char *, void **);
|
||||
typedef int prt_connect_t(void *, int);
|
||||
typedef int prt_connect_wait_t(void *, int);
|
||||
typedef int prt_server_t(const char *, void **);
|
||||
typedef int prt_accept_t(void *, void **);
|
||||
typedef int prt_wrap_t(int, bool, void **);
|
||||
typedef int prt_send_t(void *, const unsigned char *, size_t, int);
|
||||
typedef int prt_recv_t(void *, unsigned char *, size_t, int *);
|
||||
typedef int prt_descriptor_t(const void *);
|
||||
typedef bool prt_address_match_t(const void *, const char *);
|
||||
typedef void prt_local_address_t(const void *, char *, size_t);
|
||||
typedef void prt_remote_address_t(const void *, char *, size_t);
|
||||
typedef void prt_close_t(void *);
|
||||
|
||||
struct hast_proto {
|
||||
const char *hp_name;
|
||||
hp_client_t *hp_client;
|
||||
hp_connect_t *hp_connect;
|
||||
hp_connect_wait_t *hp_connect_wait;
|
||||
hp_server_t *hp_server;
|
||||
hp_accept_t *hp_accept;
|
||||
hp_wrap_t *hp_wrap;
|
||||
hp_send_t *hp_send;
|
||||
hp_recv_t *hp_recv;
|
||||
hp_descriptor_t *hp_descriptor;
|
||||
hp_address_match_t *hp_address_match;
|
||||
hp_local_address_t *hp_local_address;
|
||||
hp_remote_address_t *hp_remote_address;
|
||||
hp_close_t *hp_close;
|
||||
TAILQ_ENTRY(hast_proto) hp_next;
|
||||
struct proto {
|
||||
const char *prt_name;
|
||||
prt_client_t *prt_client;
|
||||
prt_connect_t *prt_connect;
|
||||
prt_connect_wait_t *prt_connect_wait;
|
||||
prt_server_t *prt_server;
|
||||
prt_accept_t *prt_accept;
|
||||
prt_wrap_t *prt_wrap;
|
||||
prt_send_t *prt_send;
|
||||
prt_recv_t *prt_recv;
|
||||
prt_descriptor_t *prt_descriptor;
|
||||
prt_address_match_t *prt_address_match;
|
||||
prt_local_address_t *prt_local_address;
|
||||
prt_remote_address_t *prt_remote_address;
|
||||
prt_close_t *prt_close;
|
||||
TAILQ_ENTRY(proto) prt_next;
|
||||
};
|
||||
|
||||
void proto_register(struct hast_proto *proto, bool isdefault);
|
||||
void proto_register(struct proto *proto, bool isdefault);
|
||||
|
||||
int proto_common_send(int sock, const unsigned char *data, size_t size, int fd);
|
||||
int proto_common_recv(int sock, unsigned char *data, size_t size, int *fdp);
|
||||
|
@ -40,7 +40,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "hast.h"
|
||||
#include "pjdlog.h"
|
||||
#include "proto_impl.h"
|
||||
|
||||
@ -221,13 +220,13 @@ sp_close(void *ctx)
|
||||
free(spctx);
|
||||
}
|
||||
|
||||
static struct hast_proto sp_proto = {
|
||||
.hp_name = "socketpair",
|
||||
.hp_client = sp_client,
|
||||
.hp_send = sp_send,
|
||||
.hp_recv = sp_recv,
|
||||
.hp_descriptor = sp_descriptor,
|
||||
.hp_close = sp_close
|
||||
static struct proto sp_proto = {
|
||||
.prt_name = "socketpair",
|
||||
.prt_client = sp_client,
|
||||
.prt_send = sp_send,
|
||||
.prt_recv = sp_recv,
|
||||
.prt_descriptor = sp_descriptor,
|
||||
.prt_close = sp_close
|
||||
};
|
||||
|
||||
static __constructor void
|
||||
|
@ -31,6 +31,9 @@
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h> /* MAXHOSTNAMELEN */
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/tcp.h>
|
||||
@ -44,7 +47,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "hast.h"
|
||||
#include "pjdlog.h"
|
||||
#include "proto_impl.h"
|
||||
#include "subr.h"
|
||||
@ -183,7 +185,8 @@ tcp4_setup_new(const char *addr, int side, void **ctxp)
|
||||
return (errno);
|
||||
|
||||
/* Parse given address. */
|
||||
if ((ret = tcp4_addr(addr, HASTD_PORT, &tctx->tc_sin)) != 0) {
|
||||
if ((ret = tcp4_addr(addr, PROTO_TCP4_DEFAULT_PORT,
|
||||
&tctx->tc_sin)) != 0) {
|
||||
free(tctx);
|
||||
return (ret);
|
||||
}
|
||||
@ -507,7 +510,7 @@ tcp4_address_match(const void *ctx, const char *addr)
|
||||
PJDLOG_ASSERT(tctx != NULL);
|
||||
PJDLOG_ASSERT(tctx->tc_magic == TCP4_CTX_MAGIC);
|
||||
|
||||
if (tcp4_addr(addr, HASTD_PORT, &sin) != 0)
|
||||
if (tcp4_addr(addr, PROTO_TCP4_DEFAULT_PORT, &sin) != 0)
|
||||
return (false);
|
||||
ip1 = sin.sin_addr.s_addr;
|
||||
|
||||
@ -569,21 +572,21 @@ tcp4_close(void *ctx)
|
||||
free(tctx);
|
||||
}
|
||||
|
||||
static struct hast_proto tcp4_proto = {
|
||||
.hp_name = "tcp4",
|
||||
.hp_client = tcp4_client,
|
||||
.hp_connect = tcp4_connect,
|
||||
.hp_connect_wait = tcp4_connect_wait,
|
||||
.hp_server = tcp4_server,
|
||||
.hp_accept = tcp4_accept,
|
||||
.hp_wrap = tcp4_wrap,
|
||||
.hp_send = tcp4_send,
|
||||
.hp_recv = tcp4_recv,
|
||||
.hp_descriptor = tcp4_descriptor,
|
||||
.hp_address_match = tcp4_address_match,
|
||||
.hp_local_address = tcp4_local_address,
|
||||
.hp_remote_address = tcp4_remote_address,
|
||||
.hp_close = tcp4_close
|
||||
static struct proto tcp4_proto = {
|
||||
.prt_name = "tcp4",
|
||||
.prt_client = tcp4_client,
|
||||
.prt_connect = tcp4_connect,
|
||||
.prt_connect_wait = tcp4_connect_wait,
|
||||
.prt_server = tcp4_server,
|
||||
.prt_accept = tcp4_accept,
|
||||
.prt_wrap = tcp4_wrap,
|
||||
.prt_send = tcp4_send,
|
||||
.prt_recv = tcp4_recv,
|
||||
.prt_descriptor = tcp4_descriptor,
|
||||
.prt_address_match = tcp4_address_match,
|
||||
.prt_local_address = tcp4_local_address,
|
||||
.prt_remote_address = tcp4_remote_address,
|
||||
.prt_close = tcp4_close
|
||||
};
|
||||
|
||||
static __constructor void
|
||||
|
@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
|
||||
/* UDS - UNIX Domain Socket */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
#include <errno.h>
|
||||
@ -42,7 +43,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "hast.h"
|
||||
#include "pjdlog.h"
|
||||
#include "proto_impl.h"
|
||||
|
||||
@ -338,19 +338,19 @@ uds_close(void *ctx)
|
||||
free(uctx);
|
||||
}
|
||||
|
||||
static struct hast_proto uds_proto = {
|
||||
.hp_name = "uds",
|
||||
.hp_client = uds_client,
|
||||
.hp_connect = uds_connect,
|
||||
.hp_connect_wait = uds_connect_wait,
|
||||
.hp_server = uds_server,
|
||||
.hp_accept = uds_accept,
|
||||
.hp_send = uds_send,
|
||||
.hp_recv = uds_recv,
|
||||
.hp_descriptor = uds_descriptor,
|
||||
.hp_local_address = uds_local_address,
|
||||
.hp_remote_address = uds_remote_address,
|
||||
.hp_close = uds_close
|
||||
static struct proto uds_proto = {
|
||||
.prt_name = "uds",
|
||||
.prt_client = uds_client,
|
||||
.prt_connect = uds_connect,
|
||||
.prt_connect_wait = uds_connect_wait,
|
||||
.prt_server = uds_server,
|
||||
.prt_accept = uds_accept,
|
||||
.prt_send = uds_send,
|
||||
.prt_recv = uds_recv,
|
||||
.prt_descriptor = uds_descriptor,
|
||||
.prt_local_address = uds_local_address,
|
||||
.prt_remote_address = uds_remote_address,
|
||||
.prt_close = uds_close
|
||||
};
|
||||
|
||||
static __constructor void
|
||||
|
Loading…
Reference in New Issue
Block a user