diff --git a/pimd/Makefile.am b/pimd/Makefile.am
index 57bd31a..4aae637 100644
--- a/pimd/Makefile.am
+++ b/pimd/Makefile.am
@@ -53,7 +53,7 @@
 	pim_oil.c pim_zlookup.c pim_pim.c pim_tlv.c pim_neighbor.c \
 	pim_hello.c pim_ifchannel.c pim_join.c pim_assert.c \
 	pim_msg.c pim_upstream.c pim_rpf.c pim_rand.c pim_macro.c \
-	pim_igmp_join.c pim_ssmpingd.c
+	pim_igmp_join.c pim_ssmpingd.c pim_int.c
 
 noinst_HEADERS = \
 	pimd.h pim_version.h pim_cmd.h pim_signals.h pim_iface.h \
@@ -62,7 +62,7 @@
 	pim_oil.h pim_zlookup.h pim_pim.h pim_tlv.h pim_neighbor.h \
 	pim_hello.h pim_ifchannel.h pim_join.h pim_assert.h \
 	pim_msg.h pim_upstream.h pim_rpf.h pim_rand.h pim_macro.h \
-	pim_igmp_join.h pim_ssmpingd.h
+	pim_igmp_join.h pim_ssmpingd.h pim_int.h
 
 pimd_SOURCES = \
 	pim_main.c $(libpim_a_SOURCES)
diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c
index 0ce0e5d..52168d6 100644
--- a/pimd/pim_assert.c
+++ b/pimd/pim_assert.c
@@ -30,6 +30,7 @@
 #include "pim_tlv.h"
 #include "pim_msg.h"
 #include "pim_pim.h"
+#include "pim_int.h"
 #include "pim_time.h"
 #include "pim_iface.h"
 #include "pim_hello.h"
@@ -297,7 +298,7 @@
     Parse assert metric preference
   */
 
-  msg_metric.metric_preference = ntohl(*(const uint32_t *) curr);
+  msg_metric.metric_preference = pim_read_uint32_host(curr);
 
   msg_metric.rpt_bit_flag = msg_metric.metric_preference & 0x80000000; /* save highest bit */
   msg_metric.metric_preference &= ~0x80000000; /* clear highest bit */
@@ -308,7 +309,7 @@
     Parse assert route metric
   */
 
-  msg_metric.route_metric = ntohl(*(const uint32_t *) curr);
+  msg_metric.route_metric = pim_read_uint32_host(curr);
 
   if (PIM_DEBUG_PIM_TRACE) {
     char neigh_str[100];
@@ -378,7 +379,7 @@
   return m1->ip_address.s_addr == m2->ip_address.s_addr;
 }
 
-int pim_assert_build_msg(char *pim_msg, int buf_size,
+int pim_assert_build_msg(uint8_t *pim_msg, int buf_size,
 			 struct interface *ifp,
 			 struct in_addr group_addr,
 			 struct in_addr source_addr,
@@ -386,8 +387,8 @@
 			 uint32_t route_metric,
 			 uint32_t rpt_bit_flag)
 {
-  char *buf_pastend = pim_msg + buf_size;
-  char *pim_msg_curr;
+  uint8_t *buf_pastend = pim_msg + buf_size;
+  uint8_t *pim_msg_curr;
   int pim_msg_size;
   int remain;
 
@@ -420,13 +421,13 @@
   }
 
   /* Metric preference */
-  *((uint32_t *) pim_msg_curr) = htonl(rpt_bit_flag ?
-				       metric_preference | 0x80000000 :
-				       metric_preference);
+  pim_write_uint32(pim_msg_curr, rpt_bit_flag ?
+		   metric_preference | 0x80000000 :
+		   metric_preference);
   pim_msg_curr += 4;
 
   /* Route metric */
-  *((uint32_t *) pim_msg_curr) = htonl(route_metric);
+  pim_write_uint32(pim_msg_curr, route_metric);
   pim_msg_curr += 4;
 
   /*
diff --git a/pimd/pim_assert.h b/pimd/pim_assert.h
index 6a8594c..feeb91d 100644
--- a/pimd/pim_assert.h
+++ b/pimd/pim_assert.h
@@ -58,7 +58,7 @@
 int pim_assert_metric_match(const struct pim_assert_metric *m1,
 			    const struct pim_assert_metric *m2);
 
-int pim_assert_build_msg(char *pim_msg, int buf_size,
+int pim_assert_build_msg(uint8_t *pim_msg, int buf_size,
 			 struct interface *ifp,
 			 struct in_addr group_addr,
 			 struct in_addr source_addr,
diff --git a/pimd/pim_int.c b/pimd/pim_int.c
new file mode 100644
index 0000000..2ff1a11
--- /dev/null
+++ b/pimd/pim_int.c
@@ -0,0 +1,44 @@
+/*
+  PIM for Quagga
+  Copyright (C) 2008  Everton da Silva Marques
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+  
+  You should have received a copy of the GNU General Public License
+  along with this program; see the file COPYING; if not, write to the
+  Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+  MA 02110-1301 USA
+  
+  $QuaggaId: $Format:%an, %ai, %h$ $
+*/
+
+#include <string.h>
+#include <netinet/in.h>
+
+#include "pim_int.h"
+
+uint32_t pim_read_uint32_host(const uint8_t *buf)
+{
+  uint32_t val;
+  memcpy(&val, buf, sizeof(val));
+  /* val is in netorder */
+  val = ntohl(val);
+  /* val is in hostorder */
+  return val;
+}
+
+void pim_write_uint32(uint8_t *buf, uint32_t val_host)
+{
+  /* val_host is in host order */
+  val_host = htonl(val_host);
+  /* val_host is in netorder */
+  memcpy(buf, &val_host, sizeof(val_host));
+}
diff --git a/pimd/pim_int.h b/pimd/pim_int.h
new file mode 100644
index 0000000..d64b103
--- /dev/null
+++ b/pimd/pim_int.h
@@ -0,0 +1,31 @@
+/*
+  PIM for Quagga
+  Copyright (C) 2008  Everton da Silva Marques
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+  
+  You should have received a copy of the GNU General Public License
+  along with this program; see the file COPYING; if not, write to the
+  Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+  MA 02110-1301 USA
+  
+  $QuaggaId: $Format:%an, %ai, %h$ $
+*/
+
+#ifndef PIM_INT_H
+#define PIM_INT_H
+
+#include <stdint.h>
+
+uint32_t pim_read_uint32_host(const uint8_t *buf);
+void pim_write_uint32(uint8_t *buf, uint32_t val_host);
+
+#endif /* PIM_INT_H */
diff --git a/pimd/pim_tlv.c b/pimd/pim_tlv.c
index fc48c88..16b7e93 100644
--- a/pimd/pim_tlv.c
+++ b/pimd/pim_tlv.c
@@ -26,12 +26,13 @@
 #include "prefix.h"
 
 #include "pimd.h"
+#include "pim_int.h"
 #include "pim_tlv.h"
 #include "pim_str.h"
 #include "pim_msg.h"
 
-char *pim_tlv_append_uint16(char *buf,
-			    const char *buf_pastend,
+char *pim_tlv_append_uint16(uint8_t *buf,
+			    const uint8_t *buf_pastend,
 			    uint16_t option_type,
 			    uint16_t option_value)
 {
@@ -54,8 +55,8 @@
   return buf;
 }
 
-char *pim_tlv_append_2uint16(char *buf,
-			     const char *buf_pastend,
+char *pim_tlv_append_2uint16(uint8_t *buf,
+			     const uint8_t *buf_pastend,
 			     uint16_t option_type,
 			     uint16_t option_value1,
 			     uint16_t option_value2)
@@ -81,8 +82,8 @@
   return buf;
 }
 
-char *pim_tlv_append_uint32(char *buf,
-			    const char *buf_pastend,
+char *pim_tlv_append_uint32(uint8_t *buf,
+			    const uint8_t *buf_pastend,
 			    uint16_t option_type,
 			    uint32_t option_value)
 {
@@ -99,7 +100,7 @@
   buf += 2;
   *(uint16_t *) buf = htons(option_len);
   buf += 2;
-  *(uint32_t *) buf = htonl(option_value);
+  pim_write_uint32(buf, option_value);
   buf += option_len;
 
   return buf;
@@ -107,14 +108,14 @@
 
 #define ucast_ipv4_encoding_len (2 + sizeof(struct in_addr))
 
-char *pim_tlv_append_addrlist_ucast(char *buf,
-				    const char *buf_pastend,
+char *pim_tlv_append_addrlist_ucast(uint8_t *buf,
+				    const uint8_t *buf_pastend,
 				    struct list *ifconnected)
 {
   struct listnode *node;
   uint16_t option_len = 0;
 
-  char *curr;
+  uint8_t *curr;
 
   node = listhead(ifconnected);
 
@@ -323,7 +324,7 @@
   PIM_OPTION_SET(*hello_options, PIM_OPTION_MASK_DR_PRIORITY);
   
   *hello_option_dr_priority = PIM_TLV_GET_DR_PRIORITY(tlv_curr);
-  
+
   return 0;
 }
 
diff --git a/pimd/pim_tlv.h b/pimd/pim_tlv.h
index 9602cb1..5ec3dc4 100644
--- a/pimd/pim_tlv.h
+++ b/pimd/pim_tlv.h
@@ -71,21 +71,21 @@
 #define PIM_TLV_MIN_SIZE                (PIM_TLV_TYPE_SIZE + PIM_TLV_LENGTH_SIZE)
 #define PIM_TLV_OPTION_SIZE(option_len) (PIM_TLV_MIN_SIZE + (option_len))
 
-char *pim_tlv_append_uint16(char *buf,
-			    const char *buf_pastend,
+char *pim_tlv_append_uint16(uint8_t *buf,
+			    const uint8_t *buf_pastend,
 			    uint16_t option_type,
 			    uint16_t option_value);
-char *pim_tlv_append_2uint16(char *buf,
-			     const char *buf_pastend,
+char *pim_tlv_append_2uint16(uint8_t *buf,
+			     const uint8_t *buf_pastend,
 			     uint16_t option_type,
 			     uint16_t option_value1,
 			     uint16_t option_value2);
-char *pim_tlv_append_uint32(char *buf,
-			    const char *buf_pastend,
+char *pim_tlv_append_uint32(uint8_t *buf,
+			    const uint8_t *buf_pastend,
 			    uint16_t option_type,
 			    uint32_t option_value);
-char *pim_tlv_append_addrlist_ucast(char *buf,
-				    const char *buf_pastend,
+char *pim_tlv_append_addrlist_ucast(uint8_t *buf,
+				    const uint8_t *buf_pastend,
 				    struct list *ifconnected);
 
 int pim_tlv_parse_holdtime(const char *ifname, struct in_addr src_addr,
