summaryrefslogtreecommitdiff
path: root/security/skip/files/patch-bl
diff options
context:
space:
mode:
Diffstat (limited to 'security/skip/files/patch-bl')
-rw-r--r--security/skip/files/patch-bl304
1 files changed, 293 insertions, 11 deletions
diff --git a/security/skip/files/patch-bl b/security/skip/files/patch-bl
index 65b4f91396e4..36c0024ad23c 100644
--- a/security/skip/files/patch-bl
+++ b/security/skip/files/patch-bl
@@ -1,11 +1,293 @@
-diff -ur --unidirectional-new-file skipsrc-1.0.orig/skip/keymgrd/skip_keymgrsubr.C skipsrc-1.0/skip/keymgrd/skip_keymgrsubr.C
---- skipsrc-1.0.orig/skip/keymgrd/skip_keymgrsubr.C Fri Oct 25 13:12:49 1996
-+++ skipsrc-1.0/skip/keymgrd/skip_keymgrsubr.C Tue Nov 25 19:30:19 1997
-@@ -59,7 +59,6 @@
- #include "SkipCert.h"
- #include "X509skip.h"
- #include "HashCert.h"
--#include "malloc.h"
- #include "utils.h"
- #include "Sig.h"
- #include "skip_log.h"
+diff -ur --unidirectional-new-file skipsrc-1.0.orig/skip/freebsd/skip_es.c work.new/skip/freebsd/skip_es.c
+--- skipsrc-1.0.orig/skip/freebsd/skip_es.c Fri Oct 25 13:12:42 1996
++++ work.new/skip/freebsd/skip_es.c Tue Mar 9 20:40:23 1999
+@@ -81,6 +81,11 @@
+ static unsigned short skip_pktid;
+ static skip_softc_t skip_softc[SKIP_MAX_OPENS];
+
++static struct callout_handle
++ skip_timeout_handle = CALLOUT_HANDLE_INITIALIZER(&skip_timeout_handle);
++
++MALLOC_DEFINE(M_SKIP, "skip", "SKIP control structures and buffers");
++
+ /*
+ * statistics
+ */
+@@ -116,11 +121,13 @@
+ static int skip_ifoutput(struct ifnet *, struct mbuf *,
+ struct sockaddr *, struct rtentry *rtp);
+ static int skip_ifinput(struct mbuf *, int);
+-static void skip_inittimers();
+-static void skip_uninittimers();
+-static void skip_timer();
++static void skip_inittimers(void);
++static void skip_uninittimers(void);
++static void skip_timer(void *);
+ static int skip_add_interface(char *);
+ static int skip_del_interface(char *);
++static void skip_ifwakeup(skip_softc_t *);
++static int skip_bufextend(struct mbuf *, int);
+
+ static void skip_encrypt_done(void *, struct mbuf *, struct mbuf *,
+ void *, skip_arg_t *);
+@@ -136,14 +143,14 @@
+ /*
+ * From Crypt/MAC system...
+ */
+-extern int skip_es_bypass_init();
+-extern void skip_es_bypass_uninit();
+-extern void skip_key_initstore();
+-extern void skip_key_uninitstore();
+-extern void skip_key_initcryptors();
+-extern void skip_key_uninitcryptors();
+-extern void skip_mac_init();
+-extern void skip_mac_uninit();
++extern int skip_es_bypass_init(void);
++extern void skip_es_bypass_uninit(void);
++extern void skip_key_initstore(void);
++extern void skip_key_uninitstore(void);
++extern void skip_key_initcryptors(void);
++extern void skip_key_uninitcryptors(void);
++extern void skip_mac_init(void);
++extern void skip_mac_uninit(void);
+ extern int skip_fmt_kmgr(union skip_messages *, skip_keycb_t *);
+
+ extern struct cdevsw skipdevsw;
+@@ -157,7 +164,7 @@
+ * Returns: 0 on success, errno otherwise.
+ */
+ int
+-skip_init()
++skip_init(void)
+ {
+ register int s, rc;
+ register struct protosw *pr;
+@@ -252,7 +259,10 @@
+ for (pr = inetdomain.dom_protosw;
+ pr < inetdomain.dom_protoswNPROTOSW; pr++) {
+
+- pr->pr_input = skip_ifinput;
++ if (pr->pr_protocol == IPPROTO_DIVERT)
++ continue;
++ pr->pr_input =
++ (void (*)(struct mbuf *, int)) skip_ifinput;
+ }
+ splx(s);
+ }
+@@ -266,7 +276,7 @@
+ * Returns: 0 on success, errno otherwise.
+ */
+ int
+-skip_uninit()
++skip_uninit(void)
+ {
+ register int s;
+ if (skip_busy || skip_keys_stats.skip_encrypt_keys_active
+@@ -422,27 +432,30 @@
+ * Returns: 0 if no data available, 1 otherwise
+ */
+ int
+-skip_ifselect(dev, rw, p)
++skip_ifpoll(dev, events, p)
+ dev_t dev;
+- int rw;
++ int events;
+ struct proc *p;
+ {
+ register skip_softc_t *sp = &skip_softc[minor(dev)];
+ register int s;
++ int revents = 0;
+
+- if (rw == FWRITE) {
+- return (1);
+- }
++ /* Check readable */
+ s = splimp();
+- if (sp->q.ifq_len > 0) {
+- splx(s);
+- return (1);
++ if (events & (POLLIN | POLLRDNORM)) {
++ if (sp->q.ifq_len > 0)
++ revents |= (events & (POLLIN | POLLRDNORM));
++ else
++ selrecord(p, &sp->sp_si);
+ }
+
+- selrecord(p, &sp->sp_si);
++ /* Always writable */
++ if (events & (POLLOUT | POLLWRNORM))
++ revents |= (events & (POLLOUT | POLLWRNORM));
+
+ splx(s);
+- return(0);
++ return(revents);
+ }
+
+ /* skip_ifread()
+@@ -786,9 +799,9 @@
+ * Returns: None
+ */
+ static void
+-skip_inittimers()
++skip_inittimers(void)
+ {
+- timeout(skip_timer, NULL, skip_key_tick * hz);
++ skip_timeout_handle = timeout(skip_timer, NULL, skip_key_tick * hz);
+ }
+
+ /* skip_uninittimers()
+@@ -798,9 +811,10 @@
+ * Returns: None
+ */
+ static void
+-skip_uninittimers()
++skip_uninittimers(void)
+ {
+- untimeout(skip_timer, NULL);
++ untimeout(skip_timer, NULL, skip_timeout_handle);
++ callout_handle_init(&skip_timeout_handle);
+ }
+
+ /* skip_timer()
+@@ -812,14 +826,13 @@
+ */
+ /*ARGSUSED*/
+ static void
+-skip_timer(arg)
+- caddr_t arg;
++skip_timer(void *arg)
+ {
+ /*
+ * run through the key store
+ */
+ skip_key_iterate(skip_key_check, NULL);
+- timeout(skip_timer, NULL, skip_key_tick * hz);
++ skip_timeout_handle = timeout(skip_timer, NULL, skip_key_tick * hz);
+ }
+
+ #ifdef notdef
+@@ -846,6 +859,7 @@
+ }
+ #endif
+
++#ifdef notdef
+ void
+ skip_dump_buf(char *what, unsigned char *p, int len)
+ {
+@@ -857,7 +871,9 @@
+ }
+ printf("].\n");
+ }
++#endif
+
++#ifdef notdef
+ void
+ skip_dump_ip(struct ip *ip)
+ {
+@@ -878,6 +894,7 @@
+ ip->ip_ttl, ip->ip_p, ntohs(ip->ip_sum));
+
+ }
++#endif
+
+ /*
+ * SKIP Ioctl and Interface management routines
+@@ -1107,7 +1124,7 @@
+ int
+ skip_ifioctl(dev, cmd, data, fflag, p)
+ dev_t dev;
+- int cmd;
++ u_long cmd;
+ caddr_t data;
+ int fflag;
+ struct proc *p;
+@@ -1390,7 +1407,6 @@
+ skip_es_t *skip_if;
+ int iphlen, hdrlen = 0;
+ struct mbuf *decryptbuf = NULL;
+- extern u_char ip_protox[];
+ skip_param_t params;
+ skip_hdr_t skip_hdr;
+ skip_es_hash_t *entry, **acl;
+@@ -1718,7 +1734,7 @@
+ */
+ decryptbuf->m_data += iphlen;
+
+- SKIP_DEBUG2("skip_ifinput: decryptbuf m_len=%d m_data=%d\n",
++ SKIP_DEBUG2("skip_ifinput: decryptbuf m_len=%d m_data=%p\n",
+ decryptbuf->m_len, decryptbuf->m_data);
+
+ }
+@@ -1745,7 +1761,7 @@
+ ip->ip_id = ntohs(ip->ip_id);
+ ip->ip_off = ntohs(ip->ip_off);
+ pass:
+- m->m_flags &= ~ M_EOR;
++ m->m_flags &= ~ M_PROTO1;
+ (*inetsw_default[ip_protox[ip->ip_p]].pr_input)(m, hlen);
+ return (0);
+ }
+@@ -1910,6 +1926,13 @@
+ */
+ IPADDRCOPY(&params.tunnel_addr, &newip->ip_dst);
+
++ /*
++ * insert different source address if specified
++ */
++
++ if(params.source != 0)
++ (&newip->ip_src)->s_addr = params.source;
++
+ encryptbuf->m_len += sizeof (struct ip);
+
+ /*
+@@ -2005,7 +2028,7 @@
+ if (params.kp_alg) {
+ newip->ip_p = SKIP_NEXT_ESP;
+ } else {
+- newip->ip_p = IPPROTO_ENCAP;
++ newip->ip_p = IPPROTO_IPIP;
+ }
+ }
+ skip_if->stats.skip_if_raw_out++;
+@@ -2028,6 +2051,13 @@
+ * insert tunnel address as destination
+ */
+ IPADDRCOPY(&params.tunnel_addr, &newip->ip_dst);
++
++ /*
++ * insert different source address if specified
++ */
++
++ if(params.source != 0)
++ (&newip->ip_src)->s_addr = params.source;
+ }
+
+ if (params.s_nsid == 0) {
+@@ -2097,7 +2127,7 @@
+ register skip_param_t *params = &res->params;
+ register struct ip *ip = mtod(original, struct ip *);
+ int rc, s, iphlen;
+- struct mbuf *outbuf, *new_hdr;
++ struct mbuf *outbuf;
+
+ SKIP_PRINT("skip_decrypt_done", params);
+
+@@ -2125,7 +2155,7 @@
+ */
+ outbuf = (res->modes & SKIP_CRYPT_ON) ? m : original;
+
+- if (res->proto != IPPROTO_ENCAP) {
++ if (res->proto != IPPROTO_IPIP) {
+ /*
+ * transport mode, need to copy original IP header
+ */
+@@ -2195,7 +2225,7 @@
+ /*
+ * tag the start of the header buffer so SKIP can recognise it
+ */
+- outbuf->m_flags |= M_EOR | M_PKTHDR;
++ outbuf->m_flags |= M_PROTO1 | M_PKTHDR;
+
+ s = splimp();
+ if (IF_QFULL(&ipintrq)) {