diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c
index 52168d6..6b062b7 100644
--- a/pimd/pim_assert.c
+++ b/pimd/pim_assert.c
@@ -236,13 +236,13 @@
 int pim_assert_recv(struct interface *ifp,
 		    struct pim_neighbor *neigh,
 		    struct in_addr src_addr,
-		    char *buf, int buf_size)
+		    uint8_t *buf, int buf_size)
 {
   struct prefix            msg_group_addr;
   struct prefix            msg_source_addr;
   struct pim_assert_metric msg_metric;
   int offset;
-  char *curr;
+  uint8_t *curr;
   int curr_size;
 
   on_trace(__PRETTY_FUNCTION__, ifp, src_addr);
@@ -445,7 +445,7 @@
 {
   struct interface *ifp;
   struct pim_interface *pim_ifp;
-  char pim_msg[1000];
+  uint8_t pim_msg[1000];
   int pim_msg_size;
 
   ifp = ch->interface;
diff --git a/pimd/pim_assert.h b/pimd/pim_assert.h
index feeb91d..bd3fb3e 100644
--- a/pimd/pim_assert.h
+++ b/pimd/pim_assert.h
@@ -51,7 +51,7 @@
 int pim_assert_recv(struct interface *ifp,
 		    struct pim_neighbor *neigh,
 		    struct in_addr src_addr,
-		    char *buf, int buf_size);
+		    uint8_t *buf, int buf_size);
 
 int pim_assert_metric_better(const struct pim_assert_metric *m1,
 			     const struct pim_assert_metric *m2);
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index dd06b07..f046801 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -3567,8 +3567,8 @@
        "Neighbor address\n"
        "Packet dump\n")
 {
-  char              buf[1000];
-  char             *pim_msg;
+  uint8_t           buf[1000];
+  uint8_t          *pim_msg;
   struct ip        *ip_hdr;
   size_t            ip_hlen; /* ip header length in bytes */
   int               ip_msg_len;
@@ -3685,8 +3685,8 @@
        "Neighbor LAN prune delay T-bit\n"
        "Neighbor secondary addresses\n")
 {
-  char              buf[1000];
-  char             *pim_msg;
+  uint8_t           buf[1000];
+  uint8_t          *pim_msg;
   struct ip        *ip_hdr;
   size_t            ip_hlen; /* ip header length in bytes */
   int               ip_msg_len;
@@ -3810,9 +3810,9 @@
        "Assert route metric\n"
        "Assert RPT bit flag\n")
 {
-  char              buf[1000];
-  char             *buf_pastend = buf + sizeof(buf);
-  char             *pim_msg;
+  uint8_t           buf[1000];
+  uint8_t          *buf_pastend = buf + sizeof(buf);
+  uint8_t          *pim_msg;
   struct ip        *ip_hdr;
   size_t            ip_hlen; /* ip header length in bytes */
   int               ip_msg_len;
@@ -3921,10 +3921,10 @@
 			  const char *argv[],
 			  int src_is_join)
 {
-  char              buf[1000];
-  const char       *buf_pastend = buf + sizeof(buf);
-  char             *pim_msg;
-  char             *pim_msg_curr;
+  uint8_t           buf[1000];
+  const uint8_t    *buf_pastend = buf + sizeof(buf);
+  uint8_t          *pim_msg;
+  uint8_t          *pim_msg_curr;
   int               pim_msg_size;
   struct ip        *ip_hdr;
   size_t            ip_hlen; /* ip header length in bytes */
diff --git a/pimd/pim_hello.c b/pimd/pim_hello.c
index c942de4..73c50d4 100644
--- a/pimd/pim_hello.c
+++ b/pimd/pim_hello.c
@@ -146,12 +146,12 @@
 
 int pim_hello_recv(struct interface *ifp,
 		   struct in_addr src_addr,
-		   char *tlv_buf, int tlv_buf_size)
+		   uint8_t *tlv_buf, int tlv_buf_size)
 {
   struct pim_interface *pim_ifp;
   struct pim_neighbor *neigh;
-  char *tlv_curr;
-  char *tlv_pastend;
+  uint8_t *tlv_curr;
+  uint8_t *tlv_pastend;
   pim_hello_options hello_options = 0; /* bit array recording options found */
   uint16_t hello_option_holdtime = 0;
   uint16_t hello_option_propagation_delay = 0;
@@ -422,7 +422,7 @@
 }
 
 int pim_hello_build_tlv(const char *ifname,
-			char *tlv_buf, int tlv_buf_size,
+			uint8_t *tlv_buf, int tlv_buf_size,
 			uint16_t holdtime,
 			uint32_t dr_priority,
 			uint32_t generation_id,
@@ -431,9 +431,9 @@
 			int can_disable_join_suppression,
 			struct list *ifconnected)
 {
-  char *curr = tlv_buf;
-  char *pastend = tlv_buf + tlv_buf_size;
-  char *tmp;
+  uint8_t *curr = tlv_buf;
+  uint8_t *pastend = tlv_buf + tlv_buf_size;
+  uint8_t *tmp;
 
   /*
    * Append options
diff --git a/pimd/pim_hello.h b/pimd/pim_hello.h
index 90a11ba..b5e272d 100644
--- a/pimd/pim_hello.h
+++ b/pimd/pim_hello.h
@@ -29,10 +29,10 @@
 
 int pim_hello_recv(struct interface *ifp,
 		   struct in_addr src_addr,
-		   char *tlv_buf, int tlv_buf_size);
+		   uint8_t *tlv_buf, int tlv_buf_size);
 
 int pim_hello_build_tlv(const char *ifname,
-			char *tlv_buf, int tlv_buf_size,
+			uint8_t *tlv_buf, int tlv_buf_size,
 			uint16_t holdtime,
 			uint32_t dr_priority,
 			uint32_t generation_id,
diff --git a/pimd/pim_igmp.c b/pimd/pim_igmp.c
index dcb9a9b..6ad521c 100644
--- a/pimd/pim_igmp.c
+++ b/pimd/pim_igmp.c
@@ -930,7 +930,7 @@
   struct sockaddr_in to;
   socklen_t fromlen = sizeof(from);
   socklen_t tolen = sizeof(to);
-  char buf[PIM_IGMP_BUFSIZE_READ];
+  uint8_t buf[PIM_IGMP_BUFSIZE_READ];
   int len;
   int ifindex = -1;
   int result = -1; /* defaults to bad */
@@ -995,7 +995,7 @@
   }
 #endif
 
-  if (pim_igmp_packet(igmp, buf, len)) {
+  if (pim_igmp_packet(igmp, (char *)buf, len)) {
     goto done;
   }
 
diff --git a/pimd/pim_join.c b/pimd/pim_join.c
index aa3aa78..5230bb6 100644
--- a/pimd/pim_join.c
+++ b/pimd/pim_join.c
@@ -107,14 +107,14 @@
 int pim_joinprune_recv(struct interface *ifp,
 		       struct pim_neighbor *neigh,
 		       struct in_addr src_addr,
-		       char *tlv_buf, int tlv_buf_size)
+		       uint8_t *tlv_buf, int tlv_buf_size)
 {
   struct prefix   msg_upstream_addr;
   uint8_t         msg_num_groups;
   uint16_t        msg_holdtime;
   int             addr_offset;
-  char           *buf;
-  char           *pastend;
+  uint8_t        *buf;
+  uint8_t        *pastend;
   int             remain;
   int             group;
 
@@ -280,9 +280,9 @@
 		       int send_join)
 {
   struct pim_interface *pim_ifp;
-  char pim_msg[1000];
-  const char *pastend = pim_msg + sizeof(pim_msg);
-  char *pim_msg_curr = pim_msg + PIM_MSG_HEADER_LEN; /* room for pim header */
+  uint8_t pim_msg[1000];
+  const uint8_t *pastend = pim_msg + sizeof(pim_msg);
+  uint8_t *pim_msg_curr = pim_msg + PIM_MSG_HEADER_LEN; /* room for pim header */
   int pim_msg_size;
   int remain;
 
diff --git a/pimd/pim_join.h b/pimd/pim_join.h
index 4d9407b..37ec0f4 100644
--- a/pimd/pim_join.h
+++ b/pimd/pim_join.h
@@ -32,7 +32,7 @@
 int pim_joinprune_recv(struct interface *ifp,
 		       struct pim_neighbor *neigh,
 		       struct in_addr src_addr,
-		       char *tlv_buf, int tlv_buf_size);
+		       uint8_t *tlv_buf, int tlv_buf_size);
 
 int pim_joinprune_send(struct interface *ifp,
 		       struct in_addr upstream_addr,
diff --git a/pimd/pim_msg.c b/pimd/pim_msg.c
index 1105eac..7eb63e8 100644
--- a/pimd/pim_msg.c
+++ b/pimd/pim_msg.c
@@ -27,7 +27,7 @@
 #include "pim_msg.h"
 #include "pim_util.h"
 
-void pim_msg_build_header(char *pim_msg, int pim_msg_size,
+void pim_msg_build_header(uint8_t *pim_msg, int pim_msg_size,
 			  uint8_t pim_msg_type)
 {
   uint16_t checksum;
@@ -50,9 +50,9 @@
   *(uint16_t *) PIM_MSG_HDR_OFFSET_CHECKSUM(pim_msg) = checksum;
 }
 
-char *pim_msg_addr_encode_ipv4_ucast(char *buf,
-				     int buf_size,
-				     struct in_addr addr)
+uint8_t *pim_msg_addr_encode_ipv4_ucast(uint8_t *buf,
+					int buf_size,
+					struct in_addr addr)
 {
   const int ENCODED_IPV4_UCAST_SIZE = 6;
 
@@ -67,9 +67,9 @@
   return buf + ENCODED_IPV4_UCAST_SIZE;
 }
 
-char *pim_msg_addr_encode_ipv4_group(char *buf,
-				     int buf_size,
-				     struct in_addr addr)
+uint8_t *pim_msg_addr_encode_ipv4_group(uint8_t *buf,
+					int buf_size,
+					struct in_addr addr)
 {
   const int ENCODED_IPV4_GROUP_SIZE = 8;
 
@@ -86,9 +86,9 @@
   return buf + ENCODED_IPV4_GROUP_SIZE;
 }
 
-char *pim_msg_addr_encode_ipv4_source(char *buf,
-				      int buf_size,
-				      struct in_addr addr)
+uint8_t *pim_msg_addr_encode_ipv4_source(uint8_t *buf,
+					 int buf_size,
+					 struct in_addr addr)
 {
   const int ENCODED_IPV4_SOURCE_SIZE = 8;
 
diff --git a/pimd/pim_msg.h b/pimd/pim_msg.h
index 228d6a8..a884fc8 100644
--- a/pimd/pim_msg.h
+++ b/pimd/pim_msg.h
@@ -37,16 +37,16 @@
 */
 #define PIM_MSG_ADDRESS_FAMILY_IPV4 (1)
 
-void pim_msg_build_header(char *pim_msg, int pim_msg_size,
+void pim_msg_build_header(uint8_t *pim_msg, int pim_msg_size,
 			  uint8_t pim_msg_type);
-char *pim_msg_addr_encode_ipv4_ucast(char *buf,
-				     int buf_size,
-				     struct in_addr addr);
-char *pim_msg_addr_encode_ipv4_group(char *buf,
-				     int buf_size,
-				     struct in_addr addr);
-char *pim_msg_addr_encode_ipv4_source(char *buf,
-				      int buf_size,
-				      struct in_addr addr);
+uint8_t *pim_msg_addr_encode_ipv4_ucast(uint8_t *buf,
+					int buf_size,
+					struct in_addr addr);
+uint8_t *pim_msg_addr_encode_ipv4_group(uint8_t *buf,
+					int buf_size,
+					struct in_addr addr);
+uint8_t *pim_msg_addr_encode_ipv4_source(uint8_t *buf,
+					 int buf_size,
+					 struct in_addr addr);
 
 #endif /* PIM_MSG_H */
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index 156081c..8dd71d6 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -111,13 +111,13 @@
   sock_close(ifp);
 }
 
-int pim_pim_packet(struct interface *ifp, char *buf, size_t len)
+int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len)
 {
   struct ip *ip_hdr;
   size_t ip_hlen; /* ip header length in bytes */
   char src_str[100];
   char dst_str[100];
-  char *pim_msg;
+  uint8_t *pim_msg;
   int pim_msg_len;
   uint8_t pim_version;
   uint8_t pim_type;
@@ -253,7 +253,7 @@
   struct sockaddr_in to;
   socklen_t fromlen = sizeof(from);
   socklen_t tolen = sizeof(to);
-  char buf[PIM_PIM_BUFSIZE_READ];
+  uint8_t buf[PIM_PIM_BUFSIZE_READ];
   int len;
   int ifindex = -1;
   int result = -1; /* defaults to bad */
@@ -437,7 +437,7 @@
 
 int pim_msg_send(int fd,
 		 struct in_addr dst,
-		 char *pim_msg,
+		 uint8_t *pim_msg,
 		 int pim_msg_size,
 		 const char *ifname)
 {
@@ -494,7 +494,7 @@
 static int hello_send(struct interface *ifp,
 		      uint16_t holdtime)
 {
-  char pim_msg[PIM_PIM_BUFSIZE_WRITE];
+  uint8_t pim_msg[PIM_PIM_BUFSIZE_WRITE];
   struct pim_interface *pim_ifp;
   int pim_tlv_size;
   int pim_msg_size;
diff --git a/pimd/pim_pim.h b/pimd/pim_pim.h
index a2c8fa5..6be1a3e 100644
--- a/pimd/pim_pim.h
+++ b/pimd/pim_pim.h
@@ -60,11 +60,11 @@
 void pim_hello_restart_now(struct interface *ifp);
 void pim_hello_restart_triggered(struct interface *ifp);
 
-int pim_pim_packet(struct interface *ifp, char *buf, size_t len);
+int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len);
 
 int pim_msg_send(int fd,
 		 struct in_addr dst,
-		 char *pim_msg,
+		 uint8_t *pim_msg,
 		 int pim_msg_size,
 		 const char *ifname);
 
diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c
index b80c0a2..4816c56 100644
--- a/pimd/pim_sock.c
+++ b/pimd/pim_sock.c
@@ -249,7 +249,7 @@
   return 0;
 }
 
-int pim_socket_recvfromto(int fd, char *buf, size_t len,
+int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,
 			  struct sockaddr_in *from, socklen_t *fromlen,
 			  struct sockaddr_in *to, socklen_t *tolen,
 			  int *ifindex)
diff --git a/pimd/pim_sock.h b/pimd/pim_sock.h
index 29b5aee..cfe39ad 100644
--- a/pimd/pim_sock.h
+++ b/pimd/pim_sock.h
@@ -45,7 +45,7 @@
 			   struct in_addr group_addr,
 			   struct in_addr source_addr,
 			   const char *ifname);
-int pim_socket_recvfromto(int fd, char *buf, size_t len,
+int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,
 			  struct sockaddr_in *from, socklen_t *fromlen,
 			  struct sockaddr_in *to, socklen_t *tolen,
 			  int *ifindex);
diff --git a/pimd/pim_ssmpingd.c b/pimd/pim_ssmpingd.c
index 652999d..fd1eac0 100644
--- a/pimd/pim_ssmpingd.c
+++ b/pimd/pim_ssmpingd.c
@@ -215,7 +215,7 @@
 }
 
 static void ssmpingd_sendto(struct ssmpingd_sock *ss,
-			    const char *buf,
+			    const uint8_t *buf,
 			    int len,
 			    struct sockaddr_in to)
 {
@@ -250,7 +250,7 @@
   socklen_t fromlen = sizeof(from);
   socklen_t tolen = sizeof(to);
   int ifindex = -1;
-  char buf[1000];
+  uint8_t buf[1000];
   int len;
 
   ++ss->requests;
diff --git a/pimd/pim_tlv.c b/pimd/pim_tlv.c
index cb6b654..4ce9a3d 100644
--- a/pimd/pim_tlv.c
+++ b/pimd/pim_tlv.c
@@ -31,10 +31,10 @@
 #include "pim_str.h"
 #include "pim_msg.h"
 
-char *pim_tlv_append_uint16(uint8_t *buf,
-			    const uint8_t *buf_pastend,
-			    uint16_t option_type,
-			    uint16_t option_value)
+uint8_t *pim_tlv_append_uint16(uint8_t *buf,
+			       const uint8_t *buf_pastend,
+			       uint16_t option_type,
+			       uint16_t option_value)
 {
   uint16_t option_len = 2;
 
@@ -55,11 +55,11 @@
   return buf;
 }
 
-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)
+uint8_t *pim_tlv_append_2uint16(uint8_t *buf,
+				const uint8_t *buf_pastend,
+				uint16_t option_type,
+				uint16_t option_value1,
+				uint16_t option_value2)
 {
   uint16_t option_len = 4;
 
@@ -82,10 +82,10 @@
   return buf;
 }
 
-char *pim_tlv_append_uint32(uint8_t *buf,
-			    const uint8_t *buf_pastend,
-			    uint16_t option_type,
-			    uint32_t option_value)
+uint8_t *pim_tlv_append_uint32(uint8_t *buf,
+			       const uint8_t *buf_pastend,
+			       uint16_t option_type,
+			       uint32_t option_value)
 {
   uint16_t option_len = 4;
 
@@ -108,9 +108,9 @@
 
 #define ucast_ipv4_encoding_len (2 + sizeof(struct in_addr))
 
-char *pim_tlv_append_addrlist_ucast(uint8_t *buf,
-				    const uint8_t *buf_pastend,
-				    struct list *ifconnected)
+uint8_t *pim_tlv_append_addrlist_ucast(uint8_t *buf,
+				       const uint8_t *buf_pastend,
+				       struct list *ifconnected)
 {
   struct listnode *node;
   uint16_t option_len = 0;
@@ -243,7 +243,7 @@
 			   pim_hello_options *hello_options,
 			   uint16_t *hello_option_holdtime,
 			   uint16_t option_len,
-			   const char *tlv_curr) 
+			   const uint8_t *tlv_curr) 
 {
   const char *label = "holdtime";
 
@@ -271,7 +271,7 @@
 				  uint16_t *hello_option_propagation_delay,
 				  uint16_t *hello_option_override_interval,
 				  uint16_t option_len,
-				  const char *tlv_curr) 
+				  const uint8_t *tlv_curr) 
 {
   if (check_tlv_length(__PRETTY_FUNCTION__, "lan_prune_delay",
 		       ifname, src_addr,
@@ -305,7 +305,7 @@
 			      pim_hello_options *hello_options,
 			      uint32_t *hello_option_dr_priority,
 			      uint16_t option_len,
-			      const char *tlv_curr) 
+			      const uint8_t *tlv_curr) 
 {
   const char *label = "dr_priority";
 
@@ -332,7 +332,7 @@
 				pim_hello_options *hello_options,
 				uint32_t *hello_option_generation_id,
 				uint16_t option_len,
-				const char *tlv_curr) 
+				const uint8_t *tlv_curr) 
 {
   const char *label = "generation_id";
 
@@ -357,12 +357,12 @@
 
 int pim_parse_addr_ucast(const char *ifname, struct in_addr src_addr,
 			 struct prefix *p,
-			 const char *buf,
+			 const uint8_t *buf,
 			 int buf_size)
 {
   const int ucast_encoding_min_len = 3; /* 1 family + 1 type + 1 addr */
-  const char *addr;
-  const char *pastend;
+  const uint8_t *addr;
+  const uint8_t *pastend;
   int family;
   int type;
 
@@ -379,10 +379,8 @@
   addr = buf;
   pastend = buf + buf_size;
 
-  family = *(const uint8_t *) addr;
-  ++addr;
-  type = *(const uint8_t *) addr;
-  ++addr;
+  family = *addr++;
+  type = *addr++;
 
   switch (family) {
   case PIM_MSG_ADDRESS_FAMILY_IPV4:
@@ -426,12 +424,12 @@
 
 int pim_parse_addr_group(const char *ifname, struct in_addr src_addr,
 			 struct prefix *p,
-			 const char *buf,
+			 const uint8_t *buf,
 			 int buf_size)
 {
   const int grp_encoding_min_len = 4; /* 1 family + 1 type + 1 reserved + 1 addr */
-  const char *addr;
-  const char *pastend;
+  const uint8_t *addr;
+  const uint8_t *pastend;
   int family;
   int type;
   int mask_len;
@@ -449,13 +447,11 @@
   addr = buf;
   pastend = buf + buf_size;
 
-  family = *(const uint8_t *) addr;
-  ++addr;
-  type = *(const uint8_t *) addr;
+  family = *addr++;
+  type = *addr++;
   ++addr;
   ++addr; /* skip b_reserved_z fields */
-  mask_len = *(const uint8_t *) addr;
-  ++addr;
+  mask_len = *addr++;
 
   switch (family) {
   case PIM_MSG_ADDRESS_FAMILY_IPV4:
@@ -503,12 +499,12 @@
 			  struct in_addr src_addr,
 			  struct prefix *p,
 			  uint8_t *flags,
-			  const char *buf,
+			  const uint8_t *buf,
 			  int buf_size)
 {
   const int src_encoding_min_len = 4; /* 1 family + 1 type + 1 reserved + 1 addr */
-  const char *addr;
-  const char *pastend;
+  const uint8_t *addr;
+  const uint8_t *pastend;
   int family;
   int type;
   int mask_len;
@@ -526,14 +522,10 @@
   addr = buf;
   pastend = buf + buf_size;
 
-  family = *(const uint8_t *) addr;
-  ++addr;
-  type = *(const uint8_t *) addr;
-  ++addr;
-  *flags = *(const uint8_t *) addr;
-  ++addr;
-  mask_len = *(const uint8_t *) addr;
-  ++addr;
+  family = *addr++;
+  type = *addr++;
+  *flags = *addr++;
+  mask_len = *addr++;
 
   switch (family) {
   case PIM_MSG_ADDRESS_FAMILY_IPV4:
@@ -607,10 +599,10 @@
 			    pim_hello_options *hello_options,
 			    struct list **hello_option_addr_list,
 			    uint16_t option_len,
-			    const char *tlv_curr) 
+			    const uint8_t *tlv_curr) 
 {
-  const char *addr;
-  const char *pastend;
+  const uint8_t *addr;
+  const uint8_t *pastend;
 
   zassert(hello_option_addr_list);
 
diff --git a/pimd/pim_tlv.h b/pimd/pim_tlv.h
index 5ec3dc4..b802cf8 100644
--- a/pimd/pim_tlv.h
+++ b/pimd/pim_tlv.h
@@ -71,63 +71,63 @@
 #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(uint8_t *buf,
-			    const uint8_t *buf_pastend,
-			    uint16_t option_type,
-			    uint16_t option_value);
-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(uint8_t *buf,
-			    const uint8_t *buf_pastend,
-			    uint16_t option_type,
-			    uint32_t option_value);
-char *pim_tlv_append_addrlist_ucast(uint8_t *buf,
-				    const uint8_t *buf_pastend,
-				    struct list *ifconnected);
+uint8_t *pim_tlv_append_uint16(uint8_t *buf,
+			       const uint8_t *buf_pastend,
+			       uint16_t option_type,
+			       uint16_t option_value);
+uint8_t *pim_tlv_append_2uint16(uint8_t *buf,
+				const uint8_t *buf_pastend,
+				uint16_t option_type,
+				uint16_t option_value1,
+				uint16_t option_value2);
+uint8_t *pim_tlv_append_uint32(uint8_t *buf,
+			       const uint8_t *buf_pastend,
+			       uint16_t option_type,
+			       uint32_t option_value);
+uint8_t *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,
 			   pim_hello_options *hello_options,
 			   uint16_t *hello_option_holdtime,
 			   uint16_t option_len,
-			   const char *tlv_curr);
+			   const uint8_t *tlv_curr);
 int pim_tlv_parse_lan_prune_delay(const char *ifname, struct in_addr src_addr,
 				  pim_hello_options *hello_options,
 				  uint16_t *hello_option_propagation_delay,
 				  uint16_t *hello_option_override_interval,
 				  uint16_t option_len,
-				  const char *tlv_curr);
+				  const uint8_t *tlv_curr);
 int pim_tlv_parse_dr_priority(const char *ifname, struct in_addr src_addr,
 			      pim_hello_options *hello_options,
 			      uint32_t *hello_option_dr_priority,
 			      uint16_t option_len,
-			      const char *tlv_curr);
+			      const uint8_t *tlv_curr);
 int pim_tlv_parse_generation_id(const char *ifname, struct in_addr src_addr,
 				pim_hello_options *hello_options,
 				uint32_t *hello_option_generation_id,
 				uint16_t option_len,
-				const char *tlv_curr);
+				const uint8_t *tlv_curr);
 int pim_tlv_parse_addr_list(const char *ifname, struct in_addr src_addr,
 			    pim_hello_options *hello_options,
 			    struct list **hello_option_addr_list,
 			    uint16_t option_len,
-			    const char *tlv_curr);
+			    const uint8_t *tlv_curr);
 
 int pim_parse_addr_ucast(const char *ifname, struct in_addr src_addr,
 			 struct prefix *p,
-			 const char *buf,
+			 const uint8_t *buf,
 			 int buf_size);
 int pim_parse_addr_group(const char *ifname, struct in_addr src_addr,
 			 struct prefix *p,
-			 const char *buf,
+			 const uint8_t *buf,
 			 int buf_size);
 int pim_parse_addr_source(const char *ifname,
 			  struct in_addr src_addr,
 			  struct prefix *p,
 			  uint8_t *flags,
-			  const char *buf,
+			  const uint8_t *buf,
 			  int buf_size);
 
 #endif /* PIM_TLV_H */
