Squashed 'third_party/rawrtc/re/' content from commit f3163ce8b

Change-Id: I6a235e6ac0f03269d951026f9d195da05c40fdab
git-subtree-dir: third_party/rawrtc/re
git-subtree-split: f3163ce8b526a13b35ef71ce4dd6f43585064d8a
diff --git a/src/sipsess/sipsess.h b/src/sipsess/sipsess.h
new file mode 100644
index 0000000..3bdfcc7
--- /dev/null
+++ b/src/sipsess/sipsess.h
@@ -0,0 +1,89 @@
+/**
+ * @file sipsess.h  SIP Session Private Interface
+ *
+ * Copyright (C) 2010 Creytiv.com
+ */
+
+
+struct sipsess {
+	struct le he;
+	struct tmr tmr;
+	struct list replyl;
+	struct list requestl;
+	struct sip_loopstate ls;
+	struct sipsess_sock *sock;
+	const struct sip_msg *msg;
+	struct sip_request *req;
+	struct sip_dialog *dlg;
+	struct sip_strans *st;
+	struct sip_auth *auth;
+	struct sip *sip;
+	char *cuser;
+	char *ctype;
+	char *close_hdrs;
+	struct mbuf *hdrs;
+	struct mbuf *desc;
+	sipsess_offer_h *offerh;
+	sipsess_answer_h *answerh;
+	sipsess_progr_h *progrh;
+	sipsess_estab_h *estabh;
+	sipsess_info_h *infoh;
+	sipsess_refer_h *referh;
+	sipsess_close_h *closeh;
+	void *arg;
+	bool owner;
+	bool sent_offer;
+	bool awaiting_answer;
+	bool modify_pending;
+	bool established;
+	bool peerterm;
+	int terminated;
+};
+
+
+struct sipsess_sock {
+	struct sip_lsnr *lsnr_resp;
+	struct sip_lsnr *lsnr_req;
+	struct hash *ht_sess;
+	struct hash *ht_ack;
+	struct sip *sip;
+	sipsess_conn_h *connh;
+	void *arg;
+};
+
+
+struct sipsess_request {
+	struct le le;
+	struct sip_loopstate ls;
+	struct sipsess *sess;
+	struct sip_request *req;
+	char *ctype;
+	struct mbuf *body;
+	sip_resp_h *resph;
+	void *arg;
+};
+
+
+int  sipsess_alloc(struct sipsess **sessp, struct sipsess_sock *sock,
+		   const char *cuser, const char *ctype, struct mbuf *desc,
+		   sip_auth_h *authh, void *aarg, bool aref,
+		   sipsess_offer_h *offerh, sipsess_answer_h *answerh,
+		   sipsess_progr_h *progrh, sipsess_estab_h *estabh,
+		   sipsess_info_h *infoh, sipsess_refer_h *referh,
+		   sipsess_close_h *closeh, void *arg);
+void sipsess_terminate(struct sipsess *sess, int err,
+		       const struct sip_msg *msg);
+int  sipsess_ack(struct sipsess_sock *sock, struct sip_dialog *dlg,
+		uint32_t cseq, struct sip_auth *auth,
+		const char *ctype, struct mbuf *desc);
+int  sipsess_ack_again(struct sipsess_sock *sock, const struct sip_msg *msg);
+int  sipsess_reply_2xx(struct sipsess *sess, const struct sip_msg *msg,
+		       uint16_t scode, const char *reason, struct mbuf *desc,
+		       const char *fmt, va_list *ap);
+int  sipsess_reply_ack(struct sipsess *sess, const struct sip_msg *msg,
+		       bool *awaiting_answer);
+int  sipsess_reinvite(struct sipsess *sess, bool reset_ls);
+int  sipsess_bye(struct sipsess *sess, bool reset_ls);
+int  sipsess_request_alloc(struct sipsess_request **reqp, struct sipsess *sess,
+			   const char *ctype, struct mbuf *body,
+			   sip_resp_h *resph, void *arg);