diff --git a/Makefile b/Makefile
index de525120e07bbd2b1a236f376d5159799f9c91db..cf131e732fc36d335380d77ec7533e5f86083b4e 100755
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,10 @@ PROC=$(shell uname -m)
 else
 ifeq (${OSARCH},FreeBSD)
 PROC=$(shell uname -m)
+else
+ifeq (${OSARCH},OpenBSD)
+PROC=$(shell uname -m)
+endif
 endif
 endif
 # Pentium Pro Optimize
diff --git a/aesopt.h b/aesopt.h
index 799c8a694d255027b4bdba5fde9ef79a7be16a9a..936ccd4ca70a470c1ebd3a14eb31bc9f2e32e5cc 100755
--- a/aesopt.h
+++ b/aesopt.h
@@ -148,7 +148,10 @@
 
 /*  PLATFORM SPECIFIC INCLUDES */
 
-#if defined( __FreeBSD__ ) || defined( __OpenBSD__ )
+#if defined( __OpenBSD__ )
+#  include <machine/types.h>
+#  include <sys/endian.h>
+#elif defined( __FreeBSD__ )
 #  include <sys/types.h>
 #  include <sys/endian.h>
 #elif defined( BSD ) && ( BSD >= 199103 )
diff --git a/channels/Makefile b/channels/Makefile
index fea205ebfccef177005e8755a11db064d6ce4587..66964ffcc6eee54a88512dfb3ab58f4cf10a9764 100755
--- a/channels/Makefile
+++ b/channels/Makefile
@@ -33,6 +33,19 @@ CHANNEL_LIBS=chan_modem.so chan_sip.so \
 #
 #CHANNEL_LIBS+=chan_vofr
 
+ifeq (${OSARCH},OpenBSD)
+MYSQLLIB=-L/usr/local/lib/mysql -lmysqlclient
+CFLAGS+=-I/usr/local/include
+PTLIB=-lpt_OpenBSD_x86_r
+H323LIB=-lh323_OpenBSD_x86_r
+CHANH323LIB=-L/usr/local/lib
+else
+MYSQLLIB=-L/usr/lib/mysql -lmysqlclient
+PTLIB=-lpt_linux_x86_r
+H323LIB=-lh323_linux_x86_r
+CHANH323LIB=-ldl
+endif
+
 ifneq (${OSARCH},Darwin)
 CHANNEL_LIBS+=chan_oss.so
 endif
@@ -117,14 +130,14 @@ endif
 
 chan_iax2.so: chan_iax2.o iax2-parser.o
 ifeq ($(USE_MYSQL_FRIENDS),1)
-	$(CC) $(SOLINK) -o $@ chan_iax2.o iax2-parser.o -L/usr/lib/mysql -lmysqlclient -lz
+	$(CC) $(SOLINK) -o $@ chan_iax2.o iax2-parser.o $(MYSQLLIB) -lz
 else
 	$(CC) $(SOLINK) -o $@ chan_iax2.o iax2-parser.o
 endif
 
 chan_iax.so: chan_iax.o
 ifeq ($(USE_MYSQL_FRIENDS),1)
-	$(CC) $(SOLINK) -o $@ chan_iax.o -L/usr/lib/mysql -lmysqlclient -lz
+	$(CC) $(SOLINK) -o $@ chan_iax.o $(MYSQLLIB) -lz
 else
 	$(CC) $(SOLINK) -o $@ chan_iax.o
 endif
@@ -137,7 +150,7 @@ chan_zap.so: chan_zap.o
 
 chan_sip.so: chan_sip.o
 ifeq ($(USE_MYSQL_FRIENDS),1)
-	$(CC) $(SOLINK) -o $@ chan_sip.o -L/usr/lib/mysql -lmysqlclient -lz
+	$(CC) $(SOLINK) -o $@ chan_sip.o $(MYSQLLIB) -lz
 else
 	$(CC) $(SOLINK) -o $@ chan_sip.o
 endif
@@ -158,7 +171,7 @@ chan_vpb.so: chan_vpb.o
 	 $(CXX) $(SOLINK) -o $@ $< -lvpb -lpthread -lm -ldl
 
 chan_h323.so: chan_h323.o h323/libchanh323.a
-	$(CC) $(SOLINK) -o $@ $< h323/libchanh323.a -L$(PWLIBDIR)/lib  -lpt_linux_x86_r -L$(OPENH323DIR)/lib -lh323_linux_x86_r -L/usr/lib -lpthread -ldl -lcrypto -lssl -lexpat
+	$(CC) $(SOLINK) -o $@ $< h323/libchanh323.a $(CHANH323LIB) -L$(PWLIBDIR)/lib $(PTLIB) -L$(OPENH323DIR)/lib $(H323LIB) -L/usr/lib -lpthread -lcrypto -lssl -lexpat
 
 
 #chan_modem.so : chan_modem.o
diff --git a/channels/chan_h323.c b/channels/chan_h323.c
index b29f6977be96775b687853553c69ca59e582d4e7..1dd16da4c18e119a8bc0c8d82a56b796572c218c 100755
--- a/channels/chan_h323.c
+++ b/channels/chan_h323.c
@@ -55,7 +55,12 @@
 #include <netdb.h>
 #include <sys/signal.h>
 #include <netinet/ip.h>
-
+#ifdef __OpenBSD__
+#include <netinet/in_systm.h>
+#ifndef IPTOS_MINCOST
+#define IPTOS_MINCOST 0x02
+#endif
+#endif
 
 #include "h323/chan_h323.h"
 
diff --git a/channels/h323/Makefile b/channels/h323/Makefile
index cd796b15308a79e9ea48417241bc65526c44707b..d07ae7c3b9e41cf04ed9d2b7313b9101f08bd417 100755
--- a/channels/h323/Makefile
+++ b/channels/h323/Makefile
@@ -26,9 +26,15 @@ CFLAGS += -march=$(shell uname -m) -DPBYTE_ORDER=PLITTLE_ENDIAN
 #
 # Only change below if you know WTF your doing
 #
+OSARCH=$(shell uname -s)
 CFLAGS += -DNDEBUG -DDO_CRASH -DDEBUG_THREADS
 CFLAGS += -pipe -Wall -fPIC -Wmissing-prototypes -Wmissing-declarations 
-CFLAGS += -DP_LINUX  -D_REENTRANT -D_GNU_SOURCE
+CFLAGS += -D_REENTRANT -D_GNU_SOURCE
+ifeq (${OSARCH},OpenBSD)
+CFLAGS += -DP_OPENBSD=200311
+else
+CFLAGS += -DP_LINUX
+endif
 CFLAGS += -DP_HAS_SEMAPHORES -DP_SSL -DP_PTHREADS
 CFLAGS += -DPHAS_TEMPLATES -DPTRACING -DP_USE_PRAGMA
 CFLAGS += -I../../include
diff --git a/include/asterisk/frame.h b/include/asterisk/frame.h
index c2409a8dae0a951f3f0f6f7c89da06f36fee8139..0bec024bbe1f6e3c00c9e24fe2f6b8f033f10d08 100755
--- a/include/asterisk/frame.h
+++ b/include/asterisk/frame.h
@@ -30,6 +30,9 @@ extern "C" {
 #ifdef __linux__
 #include <endian.h>
 #elif defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
+#if defined(__OpenBSD__)
+#include <machine/types.h>
+#endif /* __OpenBSD__ */
 #include <machine/endian.h>
 #define __BYTE_ORDER BYTE_ORDER
 #define __LITTLE_ENDIAN LITTLE_ENDIAN
diff --git a/md5.c b/md5.c
index bdbb03ff759f4397fbf8e7ca63ee6bf9789645a6..abb277ac01e7ef03c934da68df23ee1561ff657c 100755
--- a/md5.c
+++ b/md5.c
@@ -1,6 +1,10 @@
 /* MD5 checksum routines used for authentication.  Not covered by GPL, but
    in the public domain as per the copyright below */
-#if defined( __FreeBSD__ ) || defined( __OpenBSD__ )
+#if defined( __OpenBSD__ )
+#  include <machine/types.h>
+#  include <sys/endian.h>
+#elif defined( __FreeBSD__ )
+#  include <sys/types.h>
 #  include <sys/endian.h>
 #elif defined( BSD ) && ( BSD >= 199103 )
 #  include <machine/endian.h>