~mdw
/
secnet
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
site: No longer track key validity ourselves
[secnet]
/
slip.c
diff --git
a/slip.c
b/slip.c
index
369651f
..
db89a27
100644
(file)
--- a/
slip.c
+++ b/
slip.c
@@
-33,7
+33,7
@@
static void slip_stuff(struct slip *st, struct buffer_if *buf, int fd)
{
uint8_t txbuf[DEFAULT_BUFSIZE];
uint8_t *i;
{
uint8_t txbuf[DEFAULT_BUFSIZE];
uint8_t *i;
-
u
int32_t j=0;
+ int32_t j=0;
BUF_ASSERT_USED(buf);
BUF_ASSERT_USED(buf);
@@
-106,7
+106,7
@@
static void slip_unstuff(struct slip *st, uint8_t *buf, uint32_t l)
}
static void slip_init(struct slip *st, struct cloc loc, dict_t *dict,
}
static void slip_init(struct slip *st, struct cloc loc, dict_t *dict,
- string_t name, netlink_deliver_fn *to_host)
+
c
string_t name, netlink_deliver_fn *to_host)
{
st->netlink_to_tunnel=
netlink_init(&st->nl,st,loc,dict,
{
st->netlink_to_tunnel=
netlink_init(&st->nl,st,loc,dict,
@@
-124,33
+124,31
@@
struct userv {
struct slip slip;
int txfd; /* We transmit to userv */
int rxfd; /* We receive from userv */
struct slip slip;
int txfd; /* We transmit to userv */
int rxfd; /* We receive from userv */
- string_t userv_path;
- string_t service_user;
- string_t service_name;
+
c
string_t userv_path;
+
c
string_t service_user;
+
c
string_t service_name;
pid_t pid;
bool_t expecting_userv_exit;
};
static int userv_beforepoll(void *sst, struct pollfd *fds, int *nfds_io,
pid_t pid;
bool_t expecting_userv_exit;
};
static int userv_beforepoll(void *sst, struct pollfd *fds, int *nfds_io,
- int *timeout_io, const struct timeval *tv_now,
- uint64_t *now)
+ int *timeout_io)
{
struct userv *st=sst;
if (st->rxfd!=-1) {
*nfds_io=2;
fds[0].fd=st->txfd;
{
struct userv *st=sst;
if (st->rxfd!=-1) {
*nfds_io=2;
fds[0].fd=st->txfd;
- fds[0].events=
POLLERR
; /* Might want to pick up POLLOUT sometime */
+ fds[0].events=
0
; /* Might want to pick up POLLOUT sometime */
fds[1].fd=st->rxfd;
fds[1].fd=st->rxfd;
- fds[1].events=POLLIN
|POLLERR|POLLHUP
;
+ fds[1].events=POLLIN;
} else {
*nfds_io=0;
}
return 0;
}
} else {
*nfds_io=0;
}
return 0;
}
-static void userv_afterpoll(void *sst, struct pollfd *fds, int nfds,
- const struct timeval *tv_now, uint64_t *now)
+static void userv_afterpoll(void *sst, struct pollfd *fds, int nfds)
{
struct userv *st=sst;
uint8_t rxbuf[DEFAULT_BUFSIZE];
{
struct userv *st=sst;
uint8_t rxbuf[DEFAULT_BUFSIZE];
@@
-208,8
+206,8
@@
static void userv_userv_callback(void *sst, pid_t pid, int status)
}
struct userv_entry_rec {
}
struct userv_entry_rec {
- string_t path;
- char **argv;
+
c
string_t path;
+ c
onst c
har **argv;
int in;
int out;
/* XXX perhaps we should collect and log stderr? */
int in;
int out;
/* XXX perhaps we should collect and log stderr? */
@@
-224,7
+222,9
@@
static void userv_entry(void *sst)
/* XXX close all other fds */
setsid();
/* XXX close all other fds */
setsid();
- execvp(st->path,st->argv);
+ /* XXX We really should strdup() all of argv[] but because we'll just
+ exit anyway if execvp() fails it doesn't seem worth bothering. */
+ execvp(st->path,(char *const*)st->argv);
perror("userv-entry: execvp()");
exit(1);
}
perror("userv-entry: execvp()");
exit(1);
}
@@
-257,7
+257,7
@@
static void userv_invoke_userv(struct userv *st)
allnets=ipset_new();
for (r=st->slip.nl.clients; r; r=r->next) {
allnets=ipset_new();
for (r=st->slip.nl.clients; r; r=r->next) {
- if (r->
up
) {
+ if (r->
link_quality > LINK_QUALITY_UNUSED
) {
struct ipset *nan;
r->kup=True;
nan=ipset_union(allnets,r->networks);
struct ipset *nan;
r->kup=True;
nan=ipset_union(allnets,r->networks);
@@
-405,7
+405,6
@@
static list_t *userv_apply(closure_t *self, struct cloc loc, dict_t *context,
return new_closure(&st->slip.nl.cl);
}
return new_closure(&st->slip.nl.cl);
}
-init_module slip_module;
void slip_module(dict_t *dict)
{
add_closure(dict,"userv-ipif",userv_apply);
void slip_module(dict_t *dict)
{
add_closure(dict,"userv-ipif",userv_apply);