~ubuntu-branches/ubuntu/wily/tcpdump/wily

« back to all changes in this revision

Viewing changes to print-otv.c

  • Committer: Package Import Robot
  • Author(s): Sebastien Bacher
  • Date: 2013-05-29 15:24:34 UTC
  • mfrom: (7.1.13 sid)
  • Revision ID: package-import@ubuntu.com-20130529152434-x54bi8ubenxmifua
Tags: 4.4.0-1ubuntu1
* Resynchronize on Debian remaining differences:
* debian/control: 
  - Build-Depends on dh-apparmor.
  - Suggests apparmor
* debian/README.Debian, debian/tcpdump.dirs, debian/usr.sbin.tcpdump,
  debian/patches/patches/90_man_apparmor.diff,
  debian/install, debian/rules:
  - Install enforcing AppArmor profile.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Redistribution and use in source and binary forms, with or without
 
3
 * modification, are permitted provided that: (1) source code
 
4
 * distributions retain the above copyright notice and this paragraph
 
5
 * in its entirety, and (2) distributions including binary code include
 
6
 * the above copyright notice and this paragraph in its entirety in
 
7
 * the documentation or other materials provided with the distribution.
 
8
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
 
9
 * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
 
10
 * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 
11
 * FOR A PARTICULAR PURPOSE.
 
12
 *
 
13
 * Original code by Francesco Fondelli (francesco dot fondelli, gmail dot com)
 
14
 */
 
15
 
 
16
#ifdef HAVE_CONFIG_H
 
17
#include "config.h"
 
18
#endif
 
19
 
 
20
#include <tcpdump-stdinc.h>
 
21
 
 
22
#include <stdio.h>
 
23
#include <stdlib.h>
 
24
 
 
25
#include "interface.h"
 
26
#include "extract.h"
 
27
#include "addrtoname.h"
 
28
 
 
29
#include "udp.h"
 
30
 
 
31
/*
 
32
 * OTV header, draft-hasmit-otv-04
 
33
 *
 
34
 *     0                   1                   2                   3
 
35
 *     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
36
 *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
37
 *     |R|R|R|R|I|R|R|R|           Overlay ID                          |
 
38
 *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
39
 *     |          Instance ID                          | Reserved      |
 
40
 *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
41
 */
 
42
 
 
43
void
 
44
otv_print(const u_char *bp, u_int len, u_int port)
 
45
{
 
46
    u_int8_t flags;
 
47
    u_int32_t overlay_id;
 
48
    u_int32_t instance_id;
 
49
    
 
50
    if (len < 8) {
 
51
        printf("[|OTV]");
 
52
        return;
 
53
    }
 
54
 
 
55
    flags = *bp;
 
56
    bp += 1;
 
57
 
 
58
    overlay_id = EXTRACT_24BITS(bp);
 
59
    bp += 3;
 
60
 
 
61
    instance_id = EXTRACT_24BITS(bp);
 
62
    bp += 4;
 
63
 
 
64
    printf("OTV, ");
 
65
 
 
66
    fputs("flags [", stdout);
 
67
    if (flags & 0x08)
 
68
        fputs("I", stdout);
 
69
    else
 
70
        fputs(".", stdout);
 
71
    fputs("] ", stdout);
 
72
 
 
73
    printf("(0x%02x), ", flags);
 
74
    printf("overlay %u, ", overlay_id);
 
75
    printf("instance %u\n", instance_id);
 
76
 
 
77
    ether_print(gndo, bp, len - 8, len - 8, NULL, NULL);
 
78
    return;
 
79
}