diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/igmp/igmp_api.c | 4 | ||||
-rw-r--r-- | src/plugins/map/map_api.c | 2 | ||||
-rw-r--r-- | src/vnet/ip/ip_types.api | 9 | ||||
-rw-r--r-- | src/vnet/ip/ip_types_api.c | 4 | ||||
-rw-r--r-- | src/vnet/syslog/syslog_api.c | 4 | ||||
-rwxr-xr-x | src/vpp-api/python/vpp_papi/tests/test_vpp_serializer.py | 21 | ||||
-rw-r--r-- | src/vpp-api/python/vpp_papi/vpp_format.py | 16 | ||||
-rw-r--r-- | src/vpp-api/python/vpp_papi/vpp_serializer.py | 8 | ||||
-rwxr-xr-x | src/vpp-api/vapi/vapi_c_gen.py | 14 | ||||
-rw-r--r-- | src/vpp/api/types.c | 8 |
10 files changed, 52 insertions, 38 deletions
diff --git a/src/plugins/igmp/igmp_api.c b/src/plugins/igmp/igmp_api.c index 75a2daedd62..8c14fab4bc4 100644 --- a/src/plugins/igmp/igmp_api.c +++ b/src/plugins/igmp/igmp_api.c @@ -172,8 +172,8 @@ send_igmp_details (unix_shared_memory_queue_t * q, igmp_main_t * im, mp->_vl_msg_id = htons (IGMP_MSG_ID (VL_API_IGMP_DETAILS)); mp->context = context; mp->sw_if_index = htonl (config->sw_if_index); - clib_memcpy (mp->saddr.address, &src->key->ip4, sizeof (src->key->ip4)); - clib_memcpy (mp->gaddr.address, &group->key->ip4, sizeof (group->key->ip4)); + clib_memcpy (mp->saddr, &src->key->ip4, sizeof (src->key->ip4)); + clib_memcpy (mp->gaddr, &group->key->ip4, sizeof (group->key->ip4)); vl_msg_api_send_shmem (q, (u8 *) & mp); } diff --git a/src/plugins/map/map_api.c b/src/plugins/map/map_api.c index 28cfd9db389..0b17793e952 100644 --- a/src/plugins/map/map_api.c +++ b/src/plugins/map/map_api.c @@ -179,7 +179,7 @@ vl_api_map_rule_dump_t_handler (vl_api_map_rule_dump_t * mp) clib_memset (rmp, 0, sizeof (*rmp)); rmp->_vl_msg_id = ntohs (VL_API_MAP_RULE_DETAILS + mm->msg_id_base); rmp->psid = htons (i); - clib_memcpy (rmp->ip6_dst.address, &dst, sizeof (rmp->ip6_dst.address)); + clib_memcpy (rmp->ip6_dst, &dst, sizeof (rmp->ip6_dst)); rmp->context = mp->context; vl_api_send_msg (reg, (u8 *) rmp); } diff --git a/src/vnet/ip/ip_types.api b/src/vnet/ip/ip_types.api index ad24d6e65ce..29bd8ad37f5 100644 --- a/src/vnet/ip/ip_types.api +++ b/src/vnet/ip/ip_types.api @@ -14,13 +14,8 @@ * limitations under the License. */ -typedef ip4_address { - u8 address[4]; -}; - -typedef ip6_address { - u8 address[16]; -}; +typedef u8 ip4_address[4]; +typedef u8 ip6_address[16]; enum address_family { ADDRESS_IP4 = 0, diff --git a/src/vnet/ip/ip_types_api.c b/src/vnet/ip/ip_types_api.c index 3d1f8065f5d..168e6150d19 100644 --- a/src/vnet/ip/ip_types_api.c +++ b/src/vnet/ip/ip_types_api.c @@ -67,9 +67,9 @@ ip_address_union_encode (const ip46_address_t * in, vl_api_address_union_t * out) { if (ADDRESS_IP6 == clib_net_to_host_u32 (af)) - memcpy (out->ip6.address, &in->ip6, sizeof (out->ip6)); + memcpy (out->ip6, &in->ip6, sizeof (out->ip6)); else - memcpy (out->ip4.address, &in->ip4, sizeof (out->ip4)); + memcpy (out->ip4, &in->ip4, sizeof (out->ip4)); } void diff --git a/src/vnet/syslog/syslog_api.c b/src/vnet/syslog/syslog_api.c index 8f94c72b291..cef7b607157 100644 --- a/src/vnet/syslog/syslog_api.c +++ b/src/vnet/syslog/syslog_api.c @@ -149,9 +149,9 @@ vl_api_syslog_get_sender_t_handler (vl_api_syslog_get_sender_t * mp) /* *INDENT-OFF* */ REPLY_MACRO2 (VL_API_SYSLOG_GET_SENDER_REPLY, ({ - clib_memcpy (rmp->collector_address.address, &(sm->collector), + clib_memcpy (rmp->collector_address, &(sm->collector), sizeof(ip4_address_t)); - clib_memcpy (rmp->src_address.address, &(sm->src_address), + clib_memcpy (rmp->src_address, &(sm->src_address), sizeof(ip4_address_t)); rmp->collector_port = htons (sm->collector_port); if (sm->fib_index == ~0) diff --git a/src/vpp-api/python/vpp_papi/tests/test_vpp_serializer.py b/src/vpp-api/python/vpp_papi/tests/test_vpp_serializer.py index 4b47e1eca7d..ba3190cadf9 100755 --- a/src/vpp-api/python/vpp_papi/tests/test_vpp_serializer.py +++ b/src/vpp-api/python/vpp_papi/tests/test_vpp_serializer.py @@ -3,6 +3,7 @@ import unittest from vpp_papi.vpp_serializer import VPPType, VPPEnumType from vpp_papi.vpp_serializer import VPPUnionType, VPPMessage +from vpp_papi.vpp_serializer import VPPTypeAlias from vpp_papi.vpp_format import VPPFormat from socket import inet_pton, AF_INET, AF_INET6 import logging @@ -94,8 +95,10 @@ class TestAddType(unittest.TestCase): af = VPPEnumType('vl_api_address_family_t', [["ADDRESS_IP4", 0], ["ADDRESS_IP6", 1], {"enumtype": "u32"}]) - ip4 = VPPType('vl_api_ip4_address_t', [['u8', 'address', 4]]) - ip6 = VPPType('vl_api_ip6_address_t', [['u8', 'address', 16]]) + ip4 = VPPTypeAlias('vl_api_ip4_address_t', {'type': 'u8', + 'length': 4}) + ip6 = VPPTypeAlias('vl_api_ip6_address_t', {'type': 'u8', + 'length': 16}) VPPUnionType('vl_api_address_union_t', [["vl_api_ip4_address_t", "ip4"], ["vl_api_ip6_address_t", "ip6"]]) @@ -112,7 +115,6 @@ class TestAddType(unittest.TestCase): message_addr = VPPMessage('svs_address', [['vl_api_address_t', 'address']]) - b = message_addr.pack({'address': "1::1"}) self.assertEqual(len(b), 20) nt, size = message_addr.unpack(b) @@ -127,6 +129,19 @@ class TestAddType(unittest.TestCase): nt, size = message.unpack(b) self.assertEqual("1.1.1.1/24", VPPFormat.unformat(nt.prefix)) + message_array = VPPMessage('address_array', + [['vl_api_ip4_address_t', + 'addresses', 2]]) + b = message_array.pack({'addresses': ["1::1", "2::2"]}) + self.assertEqual(len(b), 8) + + message_array_vla = VPPMessage('address_array_vla', + [['u32', 'num'], + ['vl_api_ip4_address_t', + 'addresses', 0, 'num']]) + b = message_array_vla.pack({'addresses': ["1::1", "2::2"], 'num': 2}) + self.assertEqual(len(b), 12) + def test_zero_vla(self): '''Default zero'ed out for VLAs''' list = VPPType('vl_api_list_t', diff --git a/src/vpp-api/python/vpp_papi/vpp_format.py b/src/vpp-api/python/vpp_papi/vpp_format.py index c6f9477e03f..908606a92cc 100644 --- a/src/vpp-api/python/vpp_papi/vpp_format.py +++ b/src/vpp-api/python/vpp_papi/vpp_format.py @@ -32,7 +32,7 @@ class VPPFormat(object): @staticmethod def unformat_vl_api_ip6_prefix_t(args): - return "{}/{}".format(inet_ntop(AF_INET6, args.prefix.address), + return "{}/{}".format(inet_ntop(AF_INET6, args.prefix), args.len) @staticmethod @@ -43,7 +43,7 @@ class VPPFormat(object): @staticmethod def unformat_vl_api_ip4_prefix_t(args): - return "{}/{}".format(inet_ntop(AF_INET, args.prefix.address), + return "{}/{}".format(inet_ntop(AF_INET, args.prefix), args.len) @staticmethod @@ -57,18 +57,18 @@ class VPPFormat(object): @staticmethod def format_vl_api_address_t(args): try: - return {'un': {'ip6': {'address': inet_pton(AF_INET6, args)}}, + return {'un': {'ip6': inet_pton(AF_INET6, args)}, 'af': int(1)} except socket.error as e: - return {'un': {'ip4': {'address': inet_pton(AF_INET, args)}}, + return {'un': {'ip4': inet_pton(AF_INET, args)}, 'af': int(0)} @staticmethod def unformat_vl_api_address_t(arg): if arg.af == 1: - return inet_ntop(AF_INET6, arg.un.ip6.address) + return inet_ntop(AF_INET6, arg.un.ip6) if arg.af == 0: - return inet_ntop(AF_INET, arg.un.ip4.address) + return inet_ntop(AF_INET, arg.un.ip4) raise VPPFormatError @staticmethod @@ -81,11 +81,11 @@ class VPPFormat(object): def unformat_vl_api_prefix_t(arg): if arg.address.af == 1: return "{}/{}".format(inet_ntop(AF_INET6, - arg.address.un.ip6.address), + arg.address.un.ip6), arg.address_length) if arg.address.af == 0: return "{}/{}".format(inet_ntop(AF_INET, - arg.address.un.ip4.address), + arg.address.un.ip4), arg.address_length) raise VPPFormatError diff --git a/src/vpp-api/python/vpp_papi/vpp_serializer.py b/src/vpp-api/python/vpp_papi/vpp_serializer.py index f78972979cd..13721ff88d4 100644 --- a/src/vpp-api/python/vpp_papi/vpp_serializer.py +++ b/src/vpp-api/python/vpp_papi/vpp_serializer.py @@ -79,7 +79,7 @@ class FixedList_u8(object): self.packer = BaseTypes(field_type, num) self.size = self.packer.size - def pack(self, list, kwargs = None): + def pack(self, list, kwargs=None): """Packs a fixed length bytestring. Left-pads with zeros if input data is too short.""" if not list: @@ -290,7 +290,11 @@ def VPPTypeAlias(name, msgdef): if 'length' in msgdef: if msgdef['length'] == 0: raise ValueError() - types[name] = FixedList(name, msgdef['type'], msgdef['length']) + if msgdef['type'] == 'u8': + types[name] = FixedList_u8(name, msgdef['type'], + msgdef['length']) + else: + types[name] = FixedList(name, msgdef['type'], msgdef['length']) else: types[name] = t diff --git a/src/vpp-api/vapi/vapi_c_gen.py b/src/vpp-api/vapi/vapi_c_gen.py index 9939bc0556c..490b83028da 100755 --- a/src/vpp-api/vapi/vapi_c_gen.py +++ b/src/vpp-api/vapi/vapi_c_gen.py @@ -10,7 +10,7 @@ from vapi_json_parser import Field, Struct, Enum, Union, Message, JsonParser,\ class CField(Field): def get_c_name(self): - return self.name + return "vapi_type_%s" % self.name def get_c_def(self): if self.len is not None: @@ -100,14 +100,14 @@ class CField(Field): class CAlias(CField): def get_c_name(self): - return self.name + return "vapi_type_%s" % self.name def get_c_def(self): - return "typedef %s" % super(CAlias, self).get_c_def() - # if self.len is not None: - # return "typedef %s %s[%d];" % (self.type.get_c_name(), self.name, self.len) - # else: - # return "typedef %s %s;" % (self.type.get_c_name(), self.name) + if self.len is not None: + return "typedef %s vapi_type_%s[%d];" % (self.type.get_c_name(), self.name, self.len) + else: + return "typedef %s vapi_type_%s;" % (self.type.get_c_name(), self.name) + #return "typedef %s" % super(CAlias, self).get_c_def() # def needs_byte_swap diff --git a/src/vpp/api/types.c b/src/vpp/api/types.c index b1f16564c59..1e36bf5fb69 100644 --- a/src/vpp/api/types.c +++ b/src/vpp/api/types.c @@ -25,9 +25,9 @@ format_vl_api_address (u8 * s, va_list * args) const vl_api_address_t *addr = va_arg (*args, vl_api_address_t *); if (ADDRESS_IP6 == clib_net_to_host_u32 (addr->af)) - s = format (s, "ip6:%U", format_ip6_address, addr->un.ip6.address); + s = format (s, "ip6:%U", format_ip6_address, addr->un.ip6); else - s = format (s, "ip4:%U", format_ip4_address, addr->un.ip4.address); + s = format (s, "ip4:%U", format_ip4_address, addr->un.ip4); return s; } @@ -40,9 +40,9 @@ format_vl_api_address_union (u8 * s, va_list * args) vl_api_address_family_t af = va_arg (*args, vl_api_address_family_t); if (ADDRESS_IP6 == af) - s = format (s, "ip6:%U", format_ip6_address, addr->ip6.address); + s = format (s, "ip6:%U", format_ip6_address, addr->ip6); else - s = format (s, "ip4:%U", format_ip4_address, addr->ip4.address); + s = format (s, "ip4:%U", format_ip4_address, addr->ip4); return s; } |