'********************************* ' Very basic IP implementation ' ' by john.timmins@link.co.nz ' ' This file is IP_DEBUG.BAS ' ' Please let me know the bugs! ' '********************************* ' ' 'Routines included are: 'Debug_ip_frame 'Dump_rx_tx_packet Dump_rx_tx_packet: Temp16_2 = Frame_length - 1 'Get length - Adjusted for zero-start Temp16_2 = Temp16_2 / 2 'Words... Print "RXframe Length="; Print Frame_length; Print " bytes" For Temp16 = 0 To Temp16_2 Value16 = Rx_packet(temp16) Printhex Value16 ; Next Temp16 Print "*" Print "TXframe" For Temp16 = 0 To Temp16_2 Value16 = Tx_packet(temp16) Printhex Value16 ; Next Temp16 Print "*" Return Debug_ip_frame: Print Print 'current pointer 'bypass Ethernet header, 7 words Temp8 = 7 'get vers / hdr len / tos '7 Value16 = Rx_packet(temp8) Temp16 = Value16 / 256 Temp16 = Temp16 / 16 Temp16 = Temp16 And &B00001111 Print Temp8; Print " - Ver=" ; : Print Temp16 Temp16 = Value16 / 256 Temp16 = Temp16 And &B00001111 Print "Header Len=" ; : Print Temp16 Ip_header_length = Temp16 Value16 = Value16 And &B0000000011111111 Print "TOS=0x" ; : Printhex Value16 Incr Temp8 ' 'get Total Length '8 Value16 = Rx_packet(temp8) Print Temp8; Print " - Total Length=" ; : Print Value16 Incr Temp8 'get ID '9 Value16 = Rx_packet(temp8) Print Temp8; Print " - ID=" ; : Print Value16 Incr Temp8 'get Frag '10 Value16 = Rx_packet(temp8) Print Temp8; Print " - Flag / Frag=" ; : Print Value16 Incr Temp8 '11 Value16 = Rx_packet(temp8) 'get TTL & Protocol Temp16 = Value16 / 256 Print Temp8; Print " - TTL=" ; : Print Value16 'get protocol Temp16 = Value16 And &B0000000011111111 Print "Protocol=" ; : Print Temp16 Incr Temp8 '12 'get hdr chksum Value16 = Rx_packet(temp8) Print Temp8; Print " - Header ChkSum=0x" ; : Printhex Value16 Incr Temp8 'get src IP 1 '13 Value16 = Rx_packet(temp8) Print Temp8; Print " - SrcIP="; Temp16 = Value16 / 256 Print Temp16 ; : Print "."; Temp16 = Value16 And &B0000000011111111 Print Temp16 ; : Print "."; Incr Temp8 '14 'get src IP 2 Value16 = Rx_packet(temp8) Temp16 = Value16 / 256 Print Temp16 ; : Print "."; Temp16 = Value16 And &B0000000011111111 Print Temp16 Incr Temp8 'get dst IP 1 '15 Value16 = Rx_packet(temp8) Print Temp8; Print " - DstIP="; Temp16 = Value16 / 256 Print Temp16 ; : Print "."; Temp16 = Value16 And &B0000000011111111 Print Temp16 ; : Print "."; Incr Temp8 'get dst IP 2 '16 Value16 = Rx_packet(temp8) Temp16 = Value16 / 256 Print Temp16 ; : Print "."; Temp16 = Value16 And &B0000000011111111 Print Temp16 'Now, dump the data 'Bypass IP Header Ip_data_start = Ip_header_length * 2 'Bypass Ethernet Header Ip_data_start = Ip_data_start + 7 Print "IP data starts at offset "; Print Ip_data_start Value16 = Rx_packet(ip_data_start) Printhex Value16 ; : Print "-"; Incr Ip_data_start Value16 = Rx_packet(ip_data_start) Printhex Value16 ; : Print "-"; Incr Ip_data_start Value16 = Rx_packet(ip_data_start) Printhex Value16 ; : Print "-"; Incr Ip_data_start Value16 = Rx_packet(ip_data_start) Printhex Value16 Return