diff --git a/jni/pjproject-android/.svn/pristine/b1/b10001eafe80092647311ff5d9e9e8ee2e012616.svn-base b/jni/pjproject-android/.svn/pristine/b1/b10001eafe80092647311ff5d9e9e8ee2e012616.svn-base
new file mode 100644
index 0000000..5a26c5e
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/b1/b10001eafe80092647311ff5d9e9e8ee2e012616.svn-base
@@ -0,0 +1,94 @@
+/*
+ * replay-database.h
+ *
+ * interface for a replay database for packet security
+ *
+ * David A. McGrew
+ * Cisco Systems, Inc.
+ */
+
+
+#ifndef REPLAY_DB_H
+#define REPLAY_DB_H
+
+#include "integers.h"         /* for uint32_t     */
+#include "datatypes.h"        /* for v128_t       */
+#include "err.h"              /* for err_status_t */
+
+/*
+ * if the ith least significant bit is one, then the packet index
+ * window_end-i is in the database
+ */
+
+typedef struct {
+  uint32_t window_start;   /* packet index of the first bit in bitmask */
+  v128_t bitmask;  
+} rdb_t;
+
+#define rdb_bits_in_bitmask (8*sizeof(v128_t))   
+
+/*
+ * rdb init
+ *
+ * initalizes rdb
+ *
+ * returns err_status_ok on success, err_status_t_fail otherwise
+ */
+
+err_status_t
+rdb_init(rdb_t *rdb);
+
+
+/*
+ * rdb_check
+ *
+ * checks to see if index appears in rdb
+ *
+ * returns err_status_fail if the index already appears in rdb,
+ * returns err_status_ok otherwise
+ */
+
+err_status_t
+rdb_check(const rdb_t *rdb, uint32_t index);  
+
+/*
+ * rdb_add_index
+ *
+ * adds index to rdb_t (and does *not* check if index appears in db)
+ *
+ * returns err_status_ok on success, err_status_fail otherwise
+ *
+ */
+
+err_status_t
+rdb_add_index(rdb_t *rdb, uint32_t index);
+
+/*
+ * the functions rdb_increment() and rdb_get_value() are for use by 
+ * senders, not receivers - DO NOT use these functions on the same
+ * rdb_t upon which rdb_add_index is used!
+ */
+
+
+/*
+ * rdb_increment(db) increments the sequence number in db, if it is 
+ * not too high
+ *
+ * return values:
+ * 
+ *    err_status_ok            no problem
+ *    err_status_key_expired   sequence number too high
+ *
+ */
+err_status_t
+rdb_increment(rdb_t *rdb);
+
+/*
+ * rdb_get_value(db) returns the current sequence number of db
+ */
+
+uint32_t
+rdb_get_value(const rdb_t *rdb);
+
+
+#endif /* REPLAY_DB_H */ 
