3
#include "icmp_port_unreach.h"
4
#include "parse_keyword.h"
9
int icmp_port_unreach::parse_keyword(int os_id, const char *keyword, const char *value){
11
Fingerprint newfingerprint;
14
xprobe_debug(XPROBE_DEBUG_SIGNATURES, "[%s] Parsing for %i : %s = %s\n",
15
get_name(), os_id, keyword, value);
16
for (iii=0; keyarr[iii] != NULL; iii++) {
17
if ((strncmp (keyarr[iii], keyword, strlen (keyarr[iii]))) == 0) {
18
if ( (iter = os2finger.find (os_id)) == os2finger.end() ) {
19
os2finger.insert (pair<int, Fingerprint>(os_id, newfingerprint));
20
/* so that we could start adding things righ away */
21
iter = os2finger.find (os_id);
24
case ICMP_UNREACH_TTL:
25
if ( value[0] == '<' || value[0] == '>' )
27
iter->second.put_p_unreach_ttl(value);
29
case ICMP_UNREACH_ECHOED_SIZE:
30
iter->second.put_echoed_size(value);
32
case ICMP_UNREACH_ECHOED_UPSUM:
33
iter->second.put_echoed_udpsum(value);
35
case ICMP_UNREACH_ECHOED_IPSUM:
36
iter->second.put_echoed_ipsum(value);
38
case ICMP_UNREACH_ECHOED_IPID:
39
iter->second.put_echoed_ipid(value);
41
case ICMP_UNREACH_ECHOED_TOTLEN:
42
iter->second.put_echoed_totlen(value);
44
case ICMP_UNREACH_ECHOED_3BIT:
45
iter->second.put_echoed_3bit(value);
47
case ICMP_UNREACH_PRECEDENCE:
48
iter->second.put_icmp_prec_bits(value);
51
iter->second.put_icmp_df(value);
53
case ICMP_UNREACH_IPID:
54
iter->second.put_icmp_ipid(value);
56
case ICMP_UNREACH_REPLY:
57
iter->second.put_reply(value);