diff --git a/scapy/automaton.py b/scapy/automaton.py
index 072da9e1d495d6417291d71a1ed6b5d245210331..62ce75238ee6bbf9fe4e472460366c35694d9b6c 100644
--- a/scapy/automaton.py
+++ b/scapy/automaton.py
@@ -13,6 +13,7 @@ from utils import do_graph
from error import log_interactive
from plist import PacketList
from data import MTU
+from supersocket import SuperSocket
class ObjectPipe:
def __init__(self):
@@ -171,7 +172,7 @@ class _ATMT_Command:
REPLACE = "REPLACE"
REJECT = "REJECT"
-class _ATMT_supersocket:
+class _ATMT_supersocket(SuperSocket):
def __init__(self, name, ioevent, automaton, proto, args, kargs):
self.name = name
self.ioevent = ioevent
@@ -191,7 +192,16 @@ class _ATMT_supersocket:
if self.proto is not None:
r = self.proto(r)
return r
-
+ def close(self):
+ pass
+ def sr(self, *args, **kargs):
+ return sndrcv(self, *args, **kargs)
+ def sr1(self, *args, **kargs):
+ a,b = sndrcv(self, *args, **kargs)
+ if len(a) > 0:
+ return a[0][1]
+ else:
+ return None
class _ATMT_to_supersocket:
def __init__(self, name, ioevent, automaton):
diff --git a/scapy/supersocket.py b/scapy/supersocket.py
index e3e49c0613669b5aa3b795add9a9c9c42ea56012..10a32de951d4f2742e1736ade3e26544cc24a6ca 100644
--- a/scapy/supersocket.py
+++ b/scapy/supersocket.py
@@ -40,10 +40,14 @@ class SuperSocket:
self.outs.close()
if self.ins and self.ins.fileno() != -1:
self.ins.close()
- def bind_in(self, addr):
- self.ins.bind(addr)
- def bind_out(self, addr):
- self.outs.bind(addr)
+ def sr(self, *args, **kargs):
+ return sndrcv(self, *args, **kargs)
+ def sr1(self, *args, **kargs):
+ a,b = sndrcv(self, *args, **kargs)
+ if len(a) > 0:
+ return a[0][1]
+ else:
+ return None
class L3RawSocket(SuperSocket):
desc = "Layer 3 using Raw sockets (PF_INET/SOCK_RAW)"