- if self.is_unreach or self.is_prohibit or self.is_drop:
- r = self._test.vapi.ip_add_del_route(
- self.dest_addr,
- self.dest_addr_len,
- inet_pton(AF_INET6, "::"),
- 0xffffffff,
- is_local=self.is_local,
- is_unreach=self.is_unreach,
- is_prohibit=self.is_prohibit,
- is_drop=self.is_drop,
- table_id=self.table_id,
- is_ipv6=self.is_ip6)
- else:
- for path in self.paths:
- lstack = path.encode_labels()
-
- r = self._test.vapi.ip_add_del_route(
- self.dest_addr,
- self.dest_addr_len,
- path.nh_addr,
- path.nh_itf,
- table_id=self.table_id,
- next_hop_out_label_stack=lstack,
- next_hop_n_out_labels=len(lstack),
- next_hop_via_label=path.nh_via_label,
- next_hop_table_id=path.nh_table_id,
- next_hop_id=path.next_hop_id,
- is_ipv6=self.is_ip6,
- is_dvr=path.is_dvr,
- is_local=self.is_local,
- is_resolve_host=path.is_resolve_host,
- is_resolve_attached=path.is_resolve_attached,
- is_source_lookup=path.is_source_lookup,
- is_udp_encap=path.is_udp_encap,
- is_multipath=1 if len(self.paths) > 1 else 0)
+ r = self._test.vapi.ip_route_add_del(
+ route={'table_id': self.table_id,
+ 'prefix': self.prefix,
+ 'n_paths': len(self.encoded_paths),
+ 'paths': self.encoded_paths,
+ },
+ is_add=1,
+ is_multipath=0)