X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=blobdiff_plain;f=secnet.h;h=db3bee22da322090ac88af4d9d7d38b9abf089f4;hp=ce5f9d6b9731bbf1a8d8b513bf6d5351ae342cce;hb=4efd681a66c15bc6f81eefc69396669e165e5e0f;hpb=2fe58dfd10216a37f1ece081f926971882de112e diff --git a/secnet.h b/secnet.h index ce5f9d6..db3bee2 100644 --- a/secnet.h +++ b/secnet.h @@ -141,6 +141,8 @@ extern void Message(uint32_t class, char *message, ...); extern string_t ipaddr_to_string(uint32_t addr); extern string_t subnet_to_string(struct subnet *sn); +extern int sys_cmd(const char *file, char *argc, ...); + /***** END of utility functions *****/ /***** SCHEDULING support */ @@ -345,16 +347,21 @@ struct transform_if { /* Used by netlink to deliver to site, and by site to deliver to netlink. cid is the client identifier returned by netlink_regnets_fn */ typedef void netlink_deliver_fn(void *st, void *cid, struct buffer_if *buf); +/* site code can tell netlink when outgoing packets will be dropped, + so netlink can generate appropriate ICMP */ +typedef void netlink_can_deliver_fn(void *st, void *cid, bool_t can_deliver); /* Register for packets from specified networks. Return value is client identifier. */ typedef void *netlink_regnets_fn(void *st, struct subnet_list *networks, netlink_deliver_fn *deliver, void *dst, - uint32_t max_start_pad, uint32_t max_end_pad); + uint32_t max_start_pad, uint32_t max_end_pad, + string_t client_name); struct netlink_if { void *st; netlink_regnets_fn *regnets; netlink_deliver_fn *deliver; + netlink_can_deliver_fn *set_delivery; }; /* DH interface */