summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/igmp/igmp_api.c4
-rw-r--r--src/plugins/map/map_api.c2
-rw-r--r--src/vnet/ip/ip_types.api9
-rw-r--r--src/vnet/ip/ip_types_api.c4
-rw-r--r--src/vnet/syslog/syslog_api.c4
-rwxr-xr-xsrc/vpp-api/python/vpp_papi/tests/test_vpp_serializer.py21
-rw-r--r--src/vpp-api/python/vpp_papi/vpp_format.py16
-rw-r--r--src/vpp-api/python/vpp_papi/vpp_serializer.py8
-rwxr-xr-xsrc/vpp-api/vapi/vapi_c_gen.py14
-rw-r--r--src/vpp/api/types.c8
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;
}