~ubuntu-branches/ubuntu/utopic/exabgp/utopic

« back to all changes in this revision

Viewing changes to lib/exabgp/protocol/ip/tcp/flags.py

  • Committer: Package Import Robot
  • Author(s): Henry-Nicolas Tourneur
  • Date: 2014-03-08 19:07:00 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20140308190700-xjbibpg1g6001c9x
Tags: 3.3.1-1
* New upstream release
* Bump python minimal required version (2.7)
* Closes: #726066 Debian packaging improvements proposed by Vincent Bernat
* Closes: #703774 not existent rundir (/var/run/exabgp) after reboot

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# encoding: utf-8
2
 
"""
3
 
tcpflags.py
4
 
 
5
 
Created by Thomas Mangin on 2010-02-04.
6
 
Copyright (c) 2009-2013  Exa Networks. All rights reserved.
7
 
"""
8
 
 
9
 
# http://www.iana.org/assignments/tcp-header-flags
10
 
class TCPFlags (int):
11
 
        FIN    = 0x1
12
 
        SYN    = 0x2
13
 
        RST  = 0x4
14
 
        PUSH   = 0x8
15
 
        ACK    = 0x10
16
 
        URGENT = 0x20
17
 
 
18
 
        def __str__ (self):
19
 
                if self == self.FIN:    return 'fin'
20
 
                if self == self.SYN:    return 'syn'
21
 
                if self == self.RST:    return 'rst'
22
 
                if self == self.PUSH:   return 'push'
23
 
                if self == self.ACK:    return 'ack'
24
 
                if self == self.URGENT: return 'urgent'
25
 
                return 'invalid tcp flag %d' % int.__str__(self)
26
 
 
27
 
def NamedTCPFlags (name):
28
 
        flag = name.lower()
29
 
        if flag == 'fin':    return TCPFlags(TCPFlags.FIN)
30
 
        if flag == 'syn':    return TCPFlags(TCPFlags.SYN)
31
 
        if flag == 'rst':    return TCPFlags(TCPFlags.RST)
32
 
        if flag == 'push':   return TCPFlags(TCPFlags.PUSH)
33
 
        if flag == 'ack':    return TCPFlags(TCPFlags.ACK)
34
 
        if flag == 'urgent': return TCPFlags(TCPFlags.URGENT)
35
 
        raise ValueError('invalid flag name %s' % flag)
36