~ubuntu-branches/ubuntu/trusty/xprobe/trusty

« back to all changes in this revision

Viewing changes to src/xpmodules/os_probe/icmp_port_unreach/parse_keyword.cc

  • Committer: Bazaar Package Importer
  • Author(s): Richard Atterer
  • Date: 2005-02-22 22:54:24 UTC
  • mfrom: (1.2.1 upstream) (2.1.2 hoary)
  • Revision ID: james.westby@ubuntu.com-20050222225424-6cqy8rr45pkna819
Tags: 0.2.2-1
New upstream version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <xprobe.h>
 
2
#include "util.h"
 
3
#include "icmp_port_unreach.h"
 
4
#include "parse_keyword.h"
 
5
#include "interface.h"
 
6
 
 
7
extern Interface *ui;
 
8
 
 
9
int icmp_port_unreach::parse_keyword(int os_id, const char *keyword, const char *value){
 
10
        
 
11
        Fingerprint newfingerprint;
 
12
        int iii=0;
 
13
 
 
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);
 
22
                        }
 
23
                        switch(iii) {
 
24
                                case ICMP_UNREACH_TTL:
 
25
                        if ( value[0] == '<' || value[0] == '>' )
 
26
                                value += 1;
 
27
                                        iter->second.put_p_unreach_ttl(value);
 
28
                                        break;
 
29
                                case ICMP_UNREACH_ECHOED_SIZE:
 
30
                                        iter->second.put_echoed_size(value);
 
31
                                        break;
 
32
                                case ICMP_UNREACH_ECHOED_UPSUM:
 
33
                                        iter->second.put_echoed_udpsum(value);
 
34
                                        break;
 
35
                                case ICMP_UNREACH_ECHOED_IPSUM:
 
36
                                        iter->second.put_echoed_ipsum(value);
 
37
                                        break;
 
38
                                case ICMP_UNREACH_ECHOED_IPID:
 
39
                                        iter->second.put_echoed_ipid(value);
 
40
                                        break;
 
41
                                case ICMP_UNREACH_ECHOED_TOTLEN:
 
42
                                        iter->second.put_echoed_totlen(value);
 
43
                                        break;
 
44
                                case ICMP_UNREACH_ECHOED_3BIT:
 
45
                                        iter->second.put_echoed_3bit(value);
 
46
                                        break;
 
47
                                case ICMP_UNREACH_PRECEDENCE:
 
48
                                        iter->second.put_icmp_prec_bits(value);
 
49
                                        break;
 
50
                                case ICMP_UNREACH_DF: 
 
51
                                        iter->second.put_icmp_df(value);
 
52
                                        break;
 
53
                                case ICMP_UNREACH_IPID:
 
54
                                        iter->second.put_icmp_ipid(value);
 
55
                                        break;
 
56
                                case ICMP_UNREACH_REPLY:
 
57
                                        iter->second.put_reply(value);
 
58
                                        break;
 
59
                        }
 
60
                        return OK;
 
61
                }
 
62
        }
 
63
return OK;
 
64
}