diff --git a/isisd/isis_pdu.h b/isisd/isis_pdu.h
new file mode 100644
index 0000000..9940368
--- /dev/null
+++ b/isisd/isis_pdu.h
@@ -0,0 +1,257 @@
+/*
+ * IS-IS Rout(e)ing protocol - isis_pdu.h
+ *                             PDU processing
+ *
+ * Copyright (C) 2001,2002   Sampo Saaristo
+ *                           Tampere University of Technology      
+ *                           Institute of Communications Engineering
+ *
+ * This program is free software; you can redistribute it and/or modify it 
+ * under the terms of the GNU General Public Licenseas 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; if not, write to the Free Software Foundation, Inc., 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#ifndef _ZEBRA_ISIS_PDU_H
+#define _ZEBRA_ISIS_PDU_H
+
+/*
+ *                    ISO 9542 - 7.5,7.6
+ *
+ *                       ES to IS Fixed Header
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |         Intradomain Routeing Protocol Discriminator           |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                       Length Indicator                        |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                  Version/Protocol ID extension                |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                         Reserved = 0                          |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |   0   |   0   |   0   |              PDU Type                 |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                         Holding Time                          | 2
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                          Checksum                             | 2
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ */
+
+struct esis_fixed_hdr
+{
+  u_char idrp;
+  u_char length;
+  u_char version;
+  u_char id_len;
+  u_char pdu_type;
+  u_int16_t holdtime;
+  u_int16_t checksum;
+}  __attribute__((packed));
+
+#define ESIS_FIXED_HDR_LEN   9
+
+#define ESH_PDU              2
+#define ISH_PDU              4
+#define RD_PDU               5
+
+/*
+ *                       IS to IS Fixed Header
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |         Intradomain Routeing Protocol Discriminator           | 
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                       Length Indicator                        |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                  Version/Protocol ID extension                |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |   R   |   R   |   R   |              PDU Type                 |      
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                            Version                            |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                            Reserved                           |
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ *  |                       Maximum Area Addresses                  |      
+ *  +-------+-------+-------+-------+-------+-------+-------+-------+
+ */
+
+struct isis_fixed_hdr 
+{
+  u_char idrp;
+  u_char length;
+  u_char version1;
+  u_char id_len;
+  u_char pdu_type;
+  u_char version2;
+  u_char reserved;
+  u_char max_area_addrs;
+};
+
+#define ISIS_FIXED_HDR_LEN 8
+
+/*
+ * IS-IS PDU types.
+ */
+
+#define L1_LAN_HELLO         15
+#define L2_LAN_HELLO         16
+/*
+ *              L1 and L2 LAN IS to IS Hello PDU header
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |                       Reserved                | Circuit Type  | 1
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Source ID                              + id_len   
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |                        Holding  Time                          | 2     
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |                        PDU Lenght                             | 2    
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |   R   |                Priority                               | 1
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |                        LAN ID                                 | id_len + 1
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ */
+struct isis_lan_hello_hdr {
+  u_char circuit_t;  
+  u_char source_id[ISIS_SYS_ID_LEN];   
+  u_int16_t hold_time;     
+  u_int16_t pdu_len;      
+  u_char prio;         
+  u_char lan_id[ISIS_SYS_ID_LEN + 1];      
+}  __attribute__((packed));
+#define ISIS_LANHELLO_HDRLEN  19
+
+#define P2P_HELLO            17
+/*
+ *           Point-to-point IS to IS hello PDU header
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |                        Reserved               | Circuit Type  | 1
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Source ID                              + id_len   
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Holding  Time                          + 2     
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        PDU Lenght                             + 2    
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |                        Local Circuit ID                       | 1
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ */
+struct isis_p2p_hello_hdr {
+  u_char circuit_t;  
+  u_char source_id[ISIS_SYS_ID_LEN];   
+  u_int16_t hold_time;     
+  u_int16_t pdu_len;      
+  u_char local_id;
+} __attribute__((packed));
+#define ISIS_P2PHELLO_HDRLEN 12
+
+#define L1_LINK_STATE        18
+#define L2_LINK_STATE        20
+/*
+ *              L1 and L2 IS to IS link state PDU header
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        PDU Length                             + 2
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Remaining Lifetime                     + 2 
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |                        LSP ID                                 | id_len + 2
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Sequence Number                        + 4
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Checksum                               + 2
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * |   P   |              ATT              |LSPDBOL|    ISTYPE     |
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ */
+struct isis_link_state_hdr {
+  u_int16_t pdu_len;      
+  u_int16_t rem_lifetime;
+  u_char  lsp_id[ISIS_SYS_ID_LEN + 2];
+  u_int32_t seq_num;
+  u_int16_t checksum;
+  u_int8_t  lsp_bits;
+} __attribute__((packed)); 
+#define ISIS_LSP_HDR_LEN 19
+
+#define L1_COMPLETE_SEQ_NUM  24
+#define L2_COMPLETE_SEQ_NUM  25
+/*
+ *      L1 and L2 IS to IS complete sequence numbers PDU header
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        PDU Lenght                             + 2    
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Source ID                              + id_len + 1
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Start LSP ID                           + id_len + 2
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        End LSP ID                             + id_len + 2
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ */
+struct isis_complete_seqnum_hdr {
+  u_int16_t pdu_len;
+  u_char    source_id[ISIS_SYS_ID_LEN + 1];
+  u_char    start_lsp_id[ISIS_SYS_ID_LEN + 2];
+  u_char    stop_lsp_id[ISIS_SYS_ID_LEN + 2];
+};
+#define ISIS_CSNP_HDRLEN 25
+
+#define L1_PARTIAL_SEQ_NUM   26
+#define L2_PARTIAL_SEQ_NUM   27
+/*
+ *      L1 and L2 IS to IS partial sequence numbers PDU header
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        PDU Length                             + 2
+ * +-------+-------+-------+-------+-------+-------+-------+-------+
+ * +                        Source ID                              + id_len + 1
+ * +---------------------------------------------------------------+
+ */
+struct isis_partial_seqnum_hdr {
+  u_int16_t pdu_len;
+  u_char    source_id[ISIS_SYS_ID_LEN + 1];
+};
+#define ISIS_PSNP_HDRLEN 9
+
+/*
+ * Function for receiving IS-IS PDUs
+ */
+int isis_receive (struct thread *thread);
+
+/*
+ * calling arguments for snp_process ()
+ */
+#define ISIS_SNP_PSNP_FLAG 0
+#define ISIS_SNP_CSNP_FLAG 1
+
+/*
+ * Sending functions
+ */
+int  send_lan_l1_hello (struct thread *thread);
+int  send_lan_l2_hello (struct thread *thread);
+int  send_p2p_hello    (struct thread *thread);
+int  send_csnp         (struct isis_circuit *circuit, int level);
+int  send_l1_csnp      (struct thread *thread);
+int  send_l2_csnp      (struct thread *thread);
+int  send_l1_psnp      (struct thread *thread);
+int  send_l2_psnp      (struct thread *thread);
+int  send_lsp          (struct thread *thread);
+int  ack_lsp           (struct isis_link_state_hdr *hdr, 
+			struct isis_circuit *circuit, int level);
+void fill_fixed_hdr    (struct isis_fixed_hdr *hdr, u_char pdu_type);
+int  send_hello        (struct isis_circuit *circuit, int level);
+
+
+int authentication_check (struct isis_passwd *one, 
+			  struct isis_passwd *theother);
+
+#endif /* _ZEBRA_ISIS_PDU_H */
+
+
+
+
+
