📄 icmppacket.java
字号:
package jpcap.packet;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* This class represents ICMP packet.
*/
public class ICMPPacket extends IPPacket {
private static final long serialVersionUID = 208303875185246732L;
/**
* echo reply
*/
public static final short ICMP_ECHOREPLY = 0;
/**
* dest unreachable
*/
public static final short ICMP_UNREACH = 3;
/**
* dest unreachable code: bad net
*/
public static final short ICMP_UNREACH_NET = 0;
/**
* dest unreachable code: bad host
*/
public static final short ICMP_UNREACH_HOST = 1;
/**
* dest unreachable code: bad protocol
*/
public static final short ICMP_UNREACH_PROTOCOL = 2;
/**
* dest unreachable code: bad port
*/
public static final short ICMP_UNREACH_PORT = 3;
/**
* dest unreachable code: IP_DF caused drop
*/
public static final short ICMP_UNREACH_NEEDFRAG = 4;
/**
* dest unreachable code: src route failed
*/
public static final short ICMP_UNREACH_SRCFAIL = 5;
/**
* dest unreachable code: unknown net
*/
public static final short ICMP_UNREACH_NET_UNKNOWN = 6;
/**
* dest unreachable code: unknown host
*/
public static final short ICMP_UNREACH_HOST_UNKNOWN = 7;
/**
* dest unreachable code: src host isolated
*/
public static final short ICMP_UNREACH_ISOLATED = 8;
/**
* dest unreachable code: prohibited access
*/
public static final short ICMP_UNREACH_NET_PROHIB = 9;
/**
* dest unreachable code: ditto
*/
public static final short ICMP_UNREACH_HOST_PROHIB = 10;
/**
* dest unreachable code: bad tos for net
*/
public static final short ICMP_UNREACH_TOSNET = 11;
/**
* dest unreachable code: bad tos for host
*/
public static final short ICMP_UNREACH_TOSHOST = 12;
/**
* dest unreachable code: admin prohib
*/
public static final short ICMP_UNREACH_FILTER_PROHIB = 13;
/**
* dest unreachable code: host prec vio.
*/
public static final short ICMP_UNREACH_HOST_PRECEDENCE = 14;
/**
* dest unreachable code: prec cutoff
*/
public static final short ICMP_UNREACH_PRECEDENCE_CUTOFF = 15;
/**
* packet lost, slow down
*/
public static final short ICMP_SOURCEQUENCH = 4;
/**
* redirect
*/
public static final short ICMP_REDIRECT = 5;
/**
* redirect code: for network
*/
public static final short ICMP_REDIRECT_NET = 0;
/**
* redirect code: for host
*/
public static final short ICMP_REDIRECT_HOST = 1;
/**
* redirect code: for tos and net
*/
public static final short ICMP_REDIRECT_TOSNET = 2;
/**
* redirect code: for tos and host
*/
public static final short ICMP_REDIRECT_TOSHOST = 3;
/**
* echo request
*/
public static final short ICMP_ECHO = 8;
/**
* router advertisement
*/
public static final short ICMP_ROUTERADVERT = 9;
/**
* router solicitation
*/
public static final short ICMP_ROUTERSOLICIT = 10;
/**
* time exceeded
*/
public static final short ICMP_TIMXCEED = 11;
/**
* time exceeded code: ttl==0 in transit
*/
public static final short ICMP_TIMXCEED_INTRANS = 0;
/**
* time exceeded code: ttl==0 in reass
*/
public static final short ICMP_TIMXCEED_REASS = 1;
/**
* ip header bad
*/
public static final short ICMP_PARAMPROB = 12;
/**
* ip header bad code: error at param ptr
*/
public static final short ICMP_PARAMPROB_ERRATPTR = 0;
/**
* ip header bad code: req. opt. absent
*/
public static final short ICMP_PARAMPROB_OPTABSENT = 1;
/**
* ip header bad code: bad length
*/
public static final short ICMP_PARAMPROB_LENGTH = 2;
/**
* timestamp request
*/
public static final short ICMP_TSTAMP = 13;
/**
* timestamp reply
*/
public static final short ICMP_TSTAMPREPLY = 14;
/**
* information request
*/
public static final short ICMP_IREQ = 15;
/**
* information reply
*/
public static final short ICMP_IREQREPLY = 16;
/**
* address mask request
*/
public static final short ICMP_MASKREQ = 17;
/**
* address mask reply
*/
public static final short ICMP_MASKREPLY = 18;
/** ICMP type */
public byte type;
/** ICMP code */
public byte code;
/** Checksum */
public short checksum;
/**
* ID
*/
public short id;
/** Sequence number */
public short seq;
/** Subnet mask */
public int subnetmask;
/** Originate timestamp */
public int orig_timestamp;
/** Receive timestamp */
public int recv_timestamp;
/** Transmit timestamp */
public int trans_timestamp;
/**
* MTU
*/
public short mtu;
/** Returned IP packet */
public IPPacket ippacket;
/** Redirect address */
public InetAddress redir_ip;
/** The number of advertised addresses */
public byte addr_num;
/** Address entry size */
public byte addr_entry_size;
/** Address alive time */
public short alive_time;
/** Advertised addresses */
public InetAddress[] router_ip;
/** Preference */
public int[] preference;
void setValue(byte type, byte code, short checksum, short id, short seq) {
this.type = type;
this.code = code;
this.checksum = checksum;
this.id = id;
this.seq = seq;
}
void setID(short id, short seq) {
this.id = id;
this.seq = seq;
}
void setTimestampValue(int orig, int recv, int trans) {
this.orig_timestamp = orig;
this.recv_timestamp = recv;
this.trans_timestamp = trans;
}
void setRedirectIP(byte[] ip) {
try {
redir_ip = InetAddress.getByAddress(ip);
} catch (UnknownHostException e) {
}
}
byte[] getRedirectIP(){
return redir_ip.getAddress();
}
void setRouterAdValue(byte addr_num, byte entry_size, short alive_time,
String[] addr, int[] pref) {
this.addr_num = addr_num;
this.addr_entry_size = entry_size;
this.alive_time = alive_time;
for (int i = 0; i < addr_num; i++) {
try {
router_ip[i] = InetAddress.getByName(addr[i]);
} catch (java.net.UnknownHostException e) {
}
preference[i] = pref[i];
}
}
/**
* Returns a string representation of this ICMP packet.<BR>
* <BR>
* Format丗type(type) code(code)
*
* @return string representation of this ICMP packet
*/
public String toString() {
return super.toString() + "type(" + type + ") code(" + code + ")";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -