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

« back to all changes in this revision

Viewing changes to lib/exabgp/protocol/ip/tcp/flag.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 TCPFlag (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(self)
 
26
 
 
27
def NamedTCPFlag (name):
 
28
        flag = name.lower()
 
29
        if flag == 'fin':    return TCPFlag(TCPFlag.FIN)
 
30
        if flag == 'syn':    return TCPFlag(TCPFlag.SYN)
 
31
        if flag == 'rst':    return TCPFlag(TCPFlag.RST)
 
32
        if flag == 'push':   return TCPFlag(TCPFlag.PUSH)
 
33
        if flag == 'ack':    return TCPFlag(TCPFlag.ACK)
 
34
        if flag == 'urgent': return TCPFlag(TCPFlag.URGENT)
 
35
        raise ValueError('invalid flag name %s' % flag)