PAPI: Union pad at the end of short fields instead of at head.
Hopefully that's going to be consistent across platforms, compilers and ABI. Change-Id: I0b82565288d88fd046278d4d8288ec1488273ba5 Signed-off-by: Ole Troan <ot@cisco.com>
This commit is contained in:
@ -398,6 +398,7 @@ fi
|
|||||||
%files api-python
|
%files api-python
|
||||||
%defattr(644,root,root)
|
%defattr(644,root,root)
|
||||||
%{python2_sitelib}/vpp_*
|
%{python2_sitelib}/vpp_*
|
||||||
|
%{python2_sitelib}/tests/*
|
||||||
|
|
||||||
%files selinux-policy
|
%files selinux-policy
|
||||||
%defattr(-,root,root,0755)
|
%defattr(-,root,root,0755)
|
||||||
|
@ -18,7 +18,7 @@ except ImportError:
|
|||||||
from distutils.core import setup, find_packages
|
from distutils.core import setup, find_packages
|
||||||
|
|
||||||
setup(name='vpp_papi',
|
setup(name='vpp_papi',
|
||||||
version='1.5',
|
version='1.6',
|
||||||
description='VPP Python binding',
|
description='VPP Python binding',
|
||||||
author='Ole Troan',
|
author='Ole Troan',
|
||||||
author_email='ot@cisco.com',
|
author_email='ot@cisco.com',
|
||||||
|
0
src/vpp-api/python/tests/__init__.py
Normal file
0
src/vpp-api/python/tests/__init__.py
Normal file
@ -15,11 +15,11 @@ class TestAddType(unittest.TestCase):
|
|||||||
[['u8', 'is_bool'],
|
[['u8', 'is_bool'],
|
||||||
['u32', 'is_int']])
|
['u32', 'is_int']])
|
||||||
|
|
||||||
b = un.pack({'is_int': 0x1234})
|
b = un.pack({'is_int': 0x12345678})
|
||||||
self.assertEqual(len(b), 4)
|
self.assertEqual(len(b), 4)
|
||||||
nt = un.unpack(b)
|
nt = un.unpack(b)
|
||||||
self.assertEqual(nt.is_bool, 52)
|
self.assertEqual(nt.is_bool, 0x12)
|
||||||
self.assertEqual(nt.is_int, 0x1234)
|
self.assertEqual(nt.is_int, 0x12345678)
|
||||||
|
|
||||||
def test_address(self):
|
def test_address(self):
|
||||||
af = VPPEnumType('vl_api_address_family_t', [["ADDRESS_IP4", 0],
|
af = VPPEnumType('vl_api_address_family_t', [["ADDRESS_IP4", 0],
|
||||||
@ -53,7 +53,7 @@ class TestAddType(unittest.TestCase):
|
|||||||
self.assertEqual(nt.un.ip4.address,
|
self.assertEqual(nt.un.ip4.address,
|
||||||
inet_pton(AF_INET, '2.2.2.2'))
|
inet_pton(AF_INET, '2.2.2.2'))
|
||||||
self.assertEqual(nt.un.ip6.address,
|
self.assertEqual(nt.un.ip6.address,
|
||||||
inet_pton(AF_INET6, '::0202:0202'))
|
inet_pton(AF_INET6, '0202:0202::'))
|
||||||
|
|
||||||
def test_arrays(self):
|
def test_arrays(self):
|
||||||
# Test cases
|
# Test cases
|
||||||
|
@ -232,17 +232,15 @@ class VPPUnionType():
|
|||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
logger.debug("Key: {} Value: {}".format(k, v))
|
logger.debug("Key: {} Value: {}".format(k, v))
|
||||||
b = self.packers[k].pack(v, kwargs)
|
b = self.packers[k].pack(v, kwargs)
|
||||||
offset = self.size - self.packers[k].size
|
|
||||||
break
|
break
|
||||||
r = bytearray(self.size)
|
r = bytearray(self.size)
|
||||||
r[offset:] = b
|
r[:len(b)] = b
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def unpack(self, data, offset=0, result=None):
|
def unpack(self, data, offset=0, result=None):
|
||||||
r = []
|
r = []
|
||||||
for k, p in self.packers.items():
|
for k, p in self.packers.items():
|
||||||
union_offset = self.size - p.size
|
r.append(p.unpack(data, offset))
|
||||||
r.append(p.unpack(data, offset + union_offset))
|
|
||||||
return self.tuple._make(r)
|
return self.tuple._make(r)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user