diff --git a/sgsnemu/syserr.c b/sgsnemu/syserr.c
new file mode 100644
index 0000000..9d793e0
--- /dev/null
+++ b/sgsnemu/syserr.c
@@ -0,0 +1,76 @@
+/* 
+ * Syslog functions.
+ * Copyright (C) 2003 Mondru AB.
+ * 
+ * The contents of this file may be used under the terms of the GNU
+ * General Public License Version 2, provided that the above copyright
+ * notice and this permission notice is included in all copies or
+ * substantial portions of the software.
+ * 
+ * The initial developer of the original code is
+ * Jens Jakobsen <jj@openggsn.org>
+ * 
+ * Contributor(s):
+ * 
+ */
+
+#include <stdarg.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <syslog.h>
+#include <string.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include "syserr.h"
+
+
+void sys_err(int pri, char *fn, int ln, int en, char *fmt, ...) {
+  va_list args;
+  char buf[SYSERR_MSGSIZE];
+
+  va_start(args, fmt);
+  vsnprintf(buf, SYSERR_MSGSIZE, fmt, args);
+  va_end(args);
+  buf[SYSERR_MSGSIZE-1] = 0; /* Make sure it is null terminated */
+  if (en)
+    syslog(pri, "%s: %d: %d (%s) %s", fn, ln, en, strerror(en), buf);
+  else
+    syslog(pri, "%s: %d: %s", fn, ln, buf);
+}
+
+void sys_errpack(int pri, char *fn, int ln, int en, struct sockaddr_in *peer,
+		 void *pack, unsigned len, char *fmt, ...) {
+  
+  va_list args;
+  char buf[SYSERR_MSGSIZE];
+  char buf2[SYSERR_MSGSIZE];
+  int n;
+  int pos;
+  
+  va_start(args, fmt);
+  vsnprintf(buf, SYSERR_MSGSIZE, fmt, args);
+  va_end(args);
+  buf[SYSERR_MSGSIZE-1] = 0;
+
+  snprintf(buf2, SYSERR_MSGSIZE, "Packet from %s:%u, length: %d, content:",
+	   inet_ntoa(peer->sin_addr),
+	   ntohs(peer->sin_port),
+	   len);
+  buf2[SYSERR_MSGSIZE-1] = 0;
+  pos = strlen(buf2);
+  for(n=0; n<len; n++) {
+    if ((pos+4)<SYSERR_MSGSIZE) {
+      sprintf((buf2+pos), " %02hhx", ((unsigned char*)pack)[n]);
+      pos += 3;
+    }
+  }
+  buf2[pos] = 0;
+  
+  if (en)
+    syslog(pri, "%s: %d: %d (%s) %s. %s", fn, ln, en, strerror(en), buf, buf2);
+  else
+    syslog(pri, "%s: %d: %s. %s", fn, ln, buf, buf2);
+
+}
diff --git a/sgsnemu/syserr.h b/sgsnemu/syserr.h
new file mode 100644
index 0000000..ae07848
--- /dev/null
+++ b/sgsnemu/syserr.h
@@ -0,0 +1,26 @@
+/* 
+ * Syslog functions.
+ * Copyright (C) 2003 Mondru AB.
+ * 
+ * The contents of this file may be used under the terms of the GNU
+ * General Public License Version 2, provided that the above copyright
+ * notice and this permission notice is included in all copies or
+ * substantial portions of the software.
+ * 
+ * The initial developer of the original code is
+ * Jens Jakobsen <jj@openggsn.org>
+ * 
+ * Contributor(s):
+ * 
+ */
+
+#ifndef _SYSERR_H
+#define _SYSERR_H
+
+#define SYSERR_MSGSIZE 256
+
+void sys_err(int pri, char *filename, int en, int line, char *fmt, ...);
+void sys_errpack(int pri, char *fn, int ln, int en, struct sockaddr_in *peer,
+		 void *pack, unsigned len, char *fmt, ...);
+
+#endif	/* !_SYSERR_H */
