diff --git a/libs/libiax2/src/iax-client.h b/libs/libiax2/src/iax-client.h
index bd5bf609b768ef55b502e2ae00158f17fe78d5f4..483b2e843bcc5fcb6a8779c28cad26f5b8de2104 100644
--- a/libs/libiax2/src/iax-client.h
+++ b/libs/libiax2/src/iax-client.h
@@ -178,6 +178,7 @@ extern int iax_hangup(struct iax_session *session, char *byemsg);
 extern int iax_call(struct iax_session *session, const char *cidnum, const char *cidname, const char *ich, const char *lang, int wait, int format, int capability);
 extern int iax_accept(struct iax_session *session, int format);
 extern int iax_answer(struct iax_session *session);
+extern int iax_vnak(struct iax_session *sesesion);
 extern int iax_sendurl(struct iax_session *session, char *url);
 extern int iax_send_unlink(struct iax_session *session);
 extern int iax_send_link_reject(struct iax_session *session);
diff --git a/libs/libiax2/src/iax.c b/libs/libiax2/src/iax.c
index a81d8feb4da6a14d1ccac78b798e806d4c9ed510..4ad57bb0c7af4550df2e8022af336f408f0fda42 100644
--- a/libs/libiax2/src/iax.c
+++ b/libs/libiax2/src/iax.c
@@ -146,83 +146,83 @@ static int ping_time = 10;
 static void send_ping(void *session);
 
 struct iax_session {
-	/* Private data */
+	/** Private data */
 	void *pvt;
-	/* session-local Sendto function */
+	/** session-local Sendto function */
 	iax_sendto_t sendto;
-	/* Is voice quelched (e.g. hold) */
+	/** Is voice quelched (e.g. hold) */
 	int quelch;
-	/* Codec Pref Order */
+	/** Codec Pref Order */
 	char codec_order[32];
-	/* Codec Pref Order Index*/
+	/** Codec Pref Order Index*/
 	int codec_order_len;
-	/* Last received voice format */
+	/** Last received voice format */
 	int voiceformat;
-	/* Last transmitted voice format */
+	/** Last transmitted voice format */
 	int svoiceformat;
-	/* Last received video format */
+	/** Last received video format */
 	int videoformat;
-	/* Last transmitted video format */
+	/** Last transmitted video format */
 	int svideoformat;
-	/* Per session capability */
+	/** Per session capability */
 	int capability;
-	/* Last received timestamp */
+	/** Last received timestamp */
 	unsigned int last_ts;
-	/* Last transmitted timestamp */
+	/** Last transmitted timestamp */
 	unsigned int lastsent;
 #ifdef USE_VOICE_TS_PREDICTION
-	/* Next predicted voice ts */
+	/** Next predicted voice ts */
 	unsigned int nextpred;
-	/* True if the last voice we transmitted was not silence/CNG */
+	/** True if the last voice we transmitted was not silence/CNG */
 	int notsilenttx;
 #endif
-	/* Our last measured ping time */
+	/** Our last measured ping time */
 	unsigned int pingtime;
-	/* Address of peer */
+	/** Address of peer */
 	struct sockaddr_in peeraddr;
-	/* Our call number */
+	/** Our call number */
 	int callno;
-	/* Peer's call number */
+	/** Peer's call number */
 	int peercallno;
-	/* Our next outgoing sequence number */
+	/** Our next outgoing sequence number */
 	unsigned char oseqno;
-	/* Next sequence number they have not yet acknowledged */
+	/** Next sequence number they have not yet acknowledged */
 	unsigned char rseqno;
-	/* Our last received incoming sequence number */
+	/** Our last received incoming sequence number */
 	unsigned char iseqno;
-	/* Last acknowledged sequence number */
+	/** Last acknowledged sequence number */
 	unsigned char aseqno;
-	/* Last sequence number we VNAKd */
+	/** Last sequence number we VNAKd */
 	unsigned char lastvnak;
-	/* Time value that we base our transmission on */
+	/** Time value that we base our transmission on */
 	struct timeval offset;
-	/* Time value we base our delivery on */
+	/** Time value we base our delivery on */
 	struct timeval rxcore;
-	/* Current link state */
+	/** Current link state */
 	int state;
-	/* Expected Username */
+	/** Expected Username */
 	char username[MAXSTRLEN];
-	/* Expected Secret */
+	/** Expected Secret */
 	char secret[MAXSTRLEN];
-	/* Refresh if applicable */
+	/** Refresh if applicable */
 	int refresh;
 
-	/* ping scheduler id */
+	/** ping scheduler id */
 	int pingid;
 
-	/* Transfer stuff */
+	/** Transfer stuff */
 	struct sockaddr_in transfer;
 	int transferring;
 	int transfercallno;
 	int transferid;
-	int transferpeer;	/* for attended transfer */
-	int transfer_moh;	/* for music on hold while performing attended transfer */
+	int transferpeer;	/** for attended transfer */
+	int transfer_moh;	/** for music on hold while performing attended transfer */
 
 	jitterbuf *jb;
 
 	struct iax_netstat remote_netstats;
 
-	/* For linking if there are multiple connections */
+	/** For linking if there are multiple connections */
 	struct iax_session *next;
 };
 
@@ -312,24 +312,24 @@ static int __debug(char *file, int lineno, char *func, char *fmt, ...)
 typedef void (*sched_func)(void *);
 
 struct iax_sched {
-	/* These are scheduled things to be delivered */
+	/** These are scheduled things to be delivered */
 	struct timeval when;
-	/* If event is non-NULL then we're delivering an event */
+	/** If event is non-NULL then we're delivering an event */
 	struct iax_event *event;
-	/* If frame is non-NULL then we're transmitting a frame */
+	/** If frame is non-NULL then we're transmitting a frame */
 	struct iax_frame *frame;
-	/* If func is non-NULL then we should call it */
+	/** If func is non-NULL then we should call it */
 	sched_func func;
-	/* and pass it this argument */
+	/** and pass it this argument */
 	void *arg;
-	/* Easy linking */
+	/** Easy linking */
 	struct iax_sched *next;
 };
 
 static struct iax_sched *schedq = NULL;
 static struct iax_session *sessions = NULL;
 static int callnums = 1;
-static int transfer_id = 1;		/* for attended transfer */
+static int transfer_id = 1;		/** for attended transfer */
 
 
 void iax_set_private(struct iax_session *s, void *ptr)
@@ -1792,6 +1792,11 @@ int iax_answer(struct iax_session *session)
 	return send_command(session, AST_FRAME_CONTROL, AST_CONTROL_ANSWER, 0, NULL, 0, -1);
 }
 
+int iax_vnak(struct iax_session *session)
+{
+	return send_command(session, AST_FRAME_IAX, IAX_COMMAND_VNAK, 0, NULL, 0, -1);
+}
+
 int iax_load_complete(struct iax_session *session)
 {
 	return send_command(session, AST_FRAME_HTML, AST_HTML_LDCOMPLETE, 0, NULL, 0, -1);