Use the right network/link type, prepend the vISDN header...

Now only the LAPD header is invalid...

diff --git a/src/misdn.c b/src/misdn.c
index 4684c66..d4c0914 100644
--- a/src/misdn.c
+++ b/src/misdn.c
@@ -52,7 +52,7 @@
  * pcap writing of the misdn load
  * pcap format is from http://wiki.wireshark.org/Development/LibpcapFileFormat
  */
-#define WTAP_ENCAP_ISDN		17
+#define DLT_LINUX_LAPD		177
 #define PCAP_INPUT		0
 #define PCAP_OUTPUT		1
 
@@ -73,6 +73,11 @@
 	u_int32_t orig_len;
 } __attribute__((packed));
 
+struct pseudo_isdn_header {
+	int32_t uton;
+	u_int8_t channel;
+} __attribute__((packed));
+
 struct fake_lapd_frame {
 	u_int8_t ea1 : 1;
 	u_int8_t cr : 1;
@@ -94,13 +99,14 @@
 		.thiszone	= 0,
 		.sigfigs	= 0,
 		.snaplen	= 65535,
-		.network	= WTAP_ENCAP_ISDN,
+		.network	= DLT_LINUX_LAPD,
 	};
 
 	pcap_fd = fd;
 	ret = write(pcap_fd, &header, sizeof(header));
 }
 
+/* This currently only works for the D-Channel */
 static void write_pcap_packet(int direction, struct sockaddr_mISDN* addr,
 			      struct msgb *msg) {
 	if (pcap_fd < 0)
@@ -109,6 +115,13 @@
 	int ret;
 	time_t cur_time;
 	struct tm *tm;
+
+	struct pseudo_isdn_header isdn = {
+		/* user to network.. we are the network.. gboolean is a init */
+		.uton		= 0,
+		.channel	= addr->channel,
+	};
+
 	struct fake_lapd_frame header = {
 		.ea1		= 0,
 		.cr		= PCAP_OUTPUT ? 1 : 0,
@@ -121,15 +134,22 @@
 	struct pcaprec_hdr payload_header = {
 		.ts_sec	    = 0,
 		.ts_usec    = 0,
-		.incl_len   = msg->len + sizeof(header) - MISDN_HEADER_LEN,
-		.orig_len   = msg->len + sizeof(header) - MISDN_HEADER_LEN,
+		.incl_len   = msg->len + sizeof(struct fake_lapd_frame)
+				+ sizeof(struct pseudo_isdn_header)
+				- MISDN_HEADER_LEN,
+		.orig_len   = msg->len + sizeof(struct fake_lapd_frame)
+				+ sizeof(struct pseudo_isdn_header)
+				- MISDN_HEADER_LEN,
 	};
 
+
+
 	cur_time = time(NULL);
 	tm = localtime(&cur_time);
 	payload_header.ts_sec = mktime(tm);
 
 	ret = write(pcap_fd, &payload_header, sizeof(payload_header));
+	ret = write(pcap_fd, &isdn, sizeof(isdn));
 	ret = write(pcap_fd, &header, sizeof(header));
 	ret = write(pcap_fd, msg->data + MISDN_HEADER_LEN,
 			msg->len - MISDN_HEADER_LEN);