blob: 0cd4b871f7b0777ca06a892610757d8489c29636 [file] [log] [blame]
Holger Hans Peter Freyther03e4b922010-05-28 02:39:52 +08001#!/usr/bin/env python
2
3"""
4demonstrate a unblock bug on the GB Proxy..
5"""
6
7bts_ns_reset = "\x02\x00\x81\x01\x01\x82\x1f\xe7\x04\x82\x1f\xe7"
8ns_reset_ack = "\x03\x01\x82\x1f\xe7\x04\x82\x1f\xe7"
9
10bts_ns_unblock = "\x06"
11ns_unblock_ack = "\x07"
12
13bts_bvc_reset_0 = "\x00\x00\x00\x00\x22\x04\x82\x00\x00\x07\x81\x03\x3b\x81\x02"
14ns_bvc_reset_0_ack = "\x00\x00\x00\x00\x23\x04\x82\x00\x00"
15
16bts_bvc_reset_8167 = "\x00\x00\x00\x00\x22\x04\x82\x1f\xe7\x07\x81\x08\x08\x88\x72\xf4\x80\x10\x1c\x00\x9c\x40"
17
18
19import socket
20socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
21socket.bind(("0.0.0.0", 0))
22socket.setblocking(1)
23
Holger Hans Peter Freytherbed24122010-05-28 02:45:26 +080024
25import sys
26port = int(sys.argv[1])
27print "Sending data to port: %d" % port
28
29def send_and_receive(packet):
Holger Hans Peter Freyther03e4b922010-05-28 02:39:52 +080030 socket.sendto(packet, ("127.0.0.1", port))
31
32 try:
33 data, addr = socket.recvfrom(4096)
34 except socket.error, e:
35 print "ERROR", e
36 import sys
37 sys.exit(0)
38 return data
39
40#send stuff once
Holger Hans Peter Freytherbed24122010-05-28 02:45:26 +080041
42to_send = [
43 (bts_ns_reset, ns_reset_ack, "reset ack"),
44 (bts_ns_unblock, ns_unblock_ack, "unblock ack"),
45 (bts_bvc_reset_0, ns_bvc_reset_0_ack, "BVCI=0 reset ack"),
46]
Holger Hans Peter Freyther03e4b922010-05-28 02:39:52 +080047
48
Holger Hans Peter Freytherbed24122010-05-28 02:45:26 +080049for (out, inp, type) in to_send:
50 res = send_and_receive(out)
51 if res != inp:
52 print "Failed to get the %s" % type
53 sys.exit(-1)
Holger Hans Peter Freyther03e4b922010-05-28 02:39:52 +080054
55import time
56time.sleep(3)
Holger Hans Peter Freytherbed24122010-05-28 02:45:26 +080057res = send_and_receive(bts_bvc_reset_8167)
Harald Welte9acc4412010-05-28 09:46:56 +020058print "Sent all messages... check wireshark for the last response"