This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.orgHello Neels Hofmeyr, Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/1266 to look at the new patch set (#7). bsc_control.py: use ipa.py module Simplify code by using Ctrl implementation from ipa.py Change-Id: I25fd7cd4b42126354b72abd60a3837be5d13e159 --- M openbsc/contrib/bsc_control.py 1 file changed, 14 insertions(+), 58 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/66/1266/7 diff --git a/openbsc/contrib/bsc_control.py b/openbsc/contrib/bsc_control.py index ba86947..c631f02 100755 --- a/openbsc/contrib/bsc_control.py +++ b/openbsc/contrib/bsc_control.py @@ -1,29 +1,12 @@ #!/usr/bin/python # -*- mode: python-mode; py-indent-tabs-mode: nil -*- -import sys,os, random +import random from optparse import OptionParser +from ipa import Ctrl import socket -import struct verbose = False - -def prefix_ipa_ctrl_header(data): - return struct.pack(">HBB", len(data)+1, 0xee, 0) + data - -def ipa_ctrl_header(header): - (plen, ipa_proto, osmo_proto) = struct.unpack(">HBB", header) - return None if (ipa_proto != 0xee or osmo_proto != 0) else plen - -def remove_ipa_ctrl_header(data): - if (len(data) < 4): - raise BaseException("Answer too short!") - plen = ipa_ctrl_header(data[:4]) - if (None == plen): - raise BaseException("Wrong protocol in answer!") - if (plen + 3 > len(data)): - print "Warning: Wrong payload length (expected %i, got %i)" % (plen, len(data) - 3) - return data[4:plen+3], data[plen+3:] def connect(host, port): if verbose: @@ -34,39 +17,18 @@ sck.connect((host, port)) return sck -def send(sck, data): - if verbose: - print "Sending \"%s\"" %(data) - data = prefix_ipa_ctrl_header(data) - sck.send(data) - -def do_set(var, value, op_id, sck): - setmsg = "SET %s %s %s" %(op_id, var, value) - send(sck, setmsg) - -def do_get(var, op_id, sck): - getmsg = "GET %s %s" %(op_id, var) - send(sck, getmsg) - def do_set_get(sck, var, value = None): - r = random.randint(1, sys.maxint) - if (value != None): - s = 'SET_REPLY' - do_set(var, value, r, sck) - else: - s = 'GET_REPLY' - do_get(var, r, sck) - (answer, data) = remove_ipa_ctrl_header(sck.recv(4096)) - x = answer.split() - if (s == x[0] and str(r) == x[1] and var == x[2]): - return None if ('SET_REPLY' == s and value != x[3]) else x[3] - return None + (r, c) = Ctrl().cmd(var, value) + sck.send(c) + answer = Ctrl().del_header(sck.recv(4096)) + return (answer,) + Ctrl().verify(answer, r, var, value) def set_var(sck, var, val): - return do_set_get(sck, var, val) + do_set_get(sck, var, val) def get_var(sck, var): - return do_set_get(sck, var) + (_, _, v) = do_set_get(sck, var) + return v if __name__ == '__main__': random.seed() @@ -105,17 +67,14 @@ if options.cmd_set: if len(args) < 2: parser.error("Set requires var and value arguments") - do_set(args[0], ' '.join(args[1:]), options.op_id, sock) + (a, _, _) = do_set_get(sock, args[0], ' '.join(args[1:])) + print "Got message:", a if options.cmd_get: if len(args) != 1: parser.error("Get requires the var argument") - do_get(args[0], options.op_id, sock) - - data = sock.recv(1024) - while (len(data)>0): - (answer, data) = remove_ipa_ctrl_header(data) - print "Got message:", answer + (a, _, _) = do_set_get(sock, args[0]) + print "Got message:", a if options.monitor: while True: @@ -123,9 +82,6 @@ if len(data) == 0: print "Connection is gone." break - - while len(data) > 0: - (answer, data) = remove_ipa_ctrl_header(data) - print "Got message:", answer + print "Got message:", Ctrl().del_header(data) sock.close() -- To view, visit https://gerrit.osmocom.org/1266 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I25fd7cd4b42126354b72abd60a3837be5d13e159 Gerrit-PatchSet: 7 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Max <msuraev at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>