-/* $Id: isakmp_frag.h,v 1.2 2004/10/24 16:51:24 manubsd Exp $ */
+/* $NetBSD: isakmp_frag.h,v 1.5 2006/09/18 20:32:40 manu Exp $ */
+
+/* Id: isakmp_frag.h,v 1.3 2005/04/09 16:25:24 manubsd Exp */
/*
* Copyright (C) 2004 Emmanuel Dreyfus
* SUCH DAMAGE.
*/
+#ifndef _ISAKMP_FRAG_H
+#define _ISAKMP_FRAG_H
+
+#include "racoon_types.h"
+
+/* These are the values from parsing "remote {}"
+ block of the config file. */
+#define ISAKMP_FRAG_OFF FALSE /* = 0 */
+#define ISAKMP_FRAG_ON TRUE /* = 1 */
+#define ISAKMP_FRAG_FORCE 2
+
/* IKE fragmentation capabilities */
+#define VENDORID_FRAG_IDENT 0x80000000
#define VENDORID_FRAG_BASE 0x40000000
#define VENDORID_FRAG_AGG 0x80000000
-#define ISAKMP_FRAG_MAXLEN 552
+#define ISAKMP_FRAG_MAXLEN 1280 // TODO: make configurable (for now, use 1280 to make enough room for typical overhead)
+
+#define FRAG_PUT_NON_ESP_MARKER 1
struct isakmp_frag_item {
int frag_num;
int frag_last;
+ u_int16_t frag_id;
struct isakmp_frag_item *frag_next;
vchar_t *frag_packet;
};
-int isakmp_sendfrags(struct ph1handle *, vchar_t *);
-unsigned int vendorid_frag_cap(struct isakmp_gen *);
-int isakmp_frag_extract(struct ph1handle *, vchar_t *);
-vchar_t *isakmp_frag_reassembly(struct ph1handle *);
-vchar_t *isakmp_frag_addcap(vchar_t *, int);
+int isakmp_sendfrags (phase1_handle_t *, vchar_t *);
+unsigned int vendorid_frag_cap (struct isakmp_gen *);
+int isakmp_frag_extract (phase1_handle_t *, vchar_t *);
+vchar_t *isakmp_frag_reassembly (phase1_handle_t *);
+vchar_t *isakmp_frag_addcap (vchar_t *, int);
+int sendfragsfromto (int s, vchar_t *, struct sockaddr_storage *, struct sockaddr_storage *, int, u_int32_t);
+
+#endif /* _ISAKMP_FRAG_H */