selftests/bpf: use ifname instead of ifindex in XDP
Subsystems (6)
v2 cover selftests/bpf: use ifname instead of ifindex in XDP
Use interface name instead of interface index in XDP compliance test tool logs. Improve XDP compliance test tool error messages.
Changes since v1:
- split previous patch in two logically separated patches
Lorenzo Bianconi (2):
selftests/bpf: use ifname instead of ifindex in XDP compliance test
tool
selftests/bpf: improve error logs in XDP compliance test tool
tools/testing/selftests/bpf/xdp_features.c | 67 ++++++++++++++-------- 1 file changed, 43 insertions(+), 24 deletions(-)
Signature · 1 line
2.39.2
PATCH v2 1/2 selftests/bpf: use ifname instead of ifindex in XDP compliance test tool
Rely on interface name instead of interface index in error messages or logs from XDP compliance test tool.
--- tools/testing/selftests/bpf/xdp_features.c | 44 +++++++++++++--------- 1 file changed, 27 insertions(+), 17 deletions(-)
tools/testing/selftests/bpf/xdp_features.c +27 -17
@@ -25,6 +25,7 @@ static struct env { bool verbosity; + char ifname[IF_NAMESIZE]; int ifindex; bool is_tester; struct {
@@ -179,7 +180,7 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state) env.ifindex =if_nametoindex (arg);if (!env.ifindex) env.ifindex =strtoul (arg,NULL ,0 ); -if (!env.ifindex) { +if (!env.ifindex || !if_indextoname (env.ifindex, env.ifname)) {fprintf (stderr,"Bad interface index or name (%d): %s\n" , errno,strerror (errno));
@@ -205,6 +206,7 @@ static void set_env_default(void) env.feature.drv_feature =NETDEV_XDP_ACT_NDO_XMIT ; env.feature.action = -EINVAL ; env.ifindex = -ENODEV ; +strcpy (env.ifname,"unknown" );make_sockaddr (AF_INET6 ,"::ffff:127.0.0.1" ,DUT_CTRL_PORT , &env.dut_ctrl_addr,NULL ); make_sockaddr(AF_INET6, "::ffff:127.0.0.1", DUT_ECHO_PORT,
@@ -248,15 +250,18 @@ static int dut_run_echo_thread(pthread_t *t, int *sockfd) sockfd =start_reuseport_server (AF_INET6 ,SOCK_DGRAM ,NULL ,DUT_ECHO_PORT ,0 ,1 );if (!sockfd) { -fprintf (stderr,"Failed to create echo socket\n" ); +fprintf (stderr, +"Failed creating data UDP socket on device %s\n" , + env.ifname);return -errno; }/* start echo channel */ err =pthread_create (t,NULL , dut_echo_thread, sockfd);if (err) { -fprintf (stderr,"Failed creating dut_echo thread: %s\n" , -strerror (-err)); +fprintf (stderr, +"Failed creating data UDP thread on device %s: %s\n" , + env.ifname,strerror (-err));free_fds (sockfd,1 );return -EINVAL ; }
@@ -320,9 +325,8 @@ static int dut_attach_xdp_prog(struct xdp_features *skel, int flags) err =bpf_xdp_attach (env.ifindex,bpf_program__fd (prog), flags,NULL );if (err) -fprintf (stderr, -"Failed to attach XDP program to ifindex %d\n" , - env.ifindex); +fprintf (stderr,"Failed attaching XDP program to device %s\n" , + env.ifname);return err; }
@@ -358,13 +362,16 @@ static int dut_run(struct xdp_features *skel) sockfd =start_reuseport_server (AF_INET6 ,SOCK_STREAM ,NULL ,DUT_CTRL_PORT ,0 ,1 );if (!sockfd) { -fprintf (stderr,"Failed to create DUT socket\n" ); +fprintf (stderr, +"Failed creating control socket on device %s\n" , env.ifname);return -errno; } ctrl_sockfd =accept (*sockfd, (struct sockaddr *)&ctrl_addr, &addrlen);if (ctrl_sockfd <0 ) { -fprintf (stderr,"Failed to accept connection on DUT socket\n" ); +fprintf (stderr, +"Failed accepting connections on device %s control socket\n" , + env.ifname);free_fds (sockfd,1 );return -errno; }
@@ -422,8 +429,8 @@ static int dut_run(struct xdp_features *skel) &opts);if (err) {fprintf (stderr, -"Failed to query XDP cap for ifindex %d\n" , - env.ifindex); +"Failed querying XDP cap for device %s\n" , + env.ifname); goto end_thread; }
@@ -540,7 +547,9 @@ static int send_echo_msg(void) sockfd =socket (AF_INET6 ,SOCK_DGRAM ,0 );if (sockfd <0 ) { -fprintf (stderr,"Failed to create echo socket\n" ); +fprintf (stderr, +"Failed creating data UDP socket on device %s\n" , + env.ifname);return -errno; }
@@ -596,8 +605,8 @@ static int tester_run(struct xdp_features *skel) err =bpf_xdp_attach (env.ifindex,bpf_program__fd (prog), flags,NULL );if (err) { -fprintf (stderr,"Failed to attach XDP program to ifindex %d\n" , - env.ifindex); +fprintf (stderr,"Failed attaching XDP program to device %s\n" , + env.ifname); goto out; }
@@ -653,7 +662,7 @@ int main(int argc, char **argv)return err;if (env.ifindex <0 ) { -fprintf (stderr,"Invalid ifindex\n" ); +fprintf (stderr,"Invalid device name %s\n" , env.ifname);return -ENODEV ; }
@@ -684,11 +693,12 @@ int main(int argc, char **argv)if (env.is_tester) {/* Tester */ -fprintf (stdout,"Starting tester on device %d\n" , env.ifindex); +fprintf (stdout,"Starting tester service on device %s\n" , + env.ifname); err =tester_run (skel); }else {/* DUT */ -fprintf (stdout,"Starting DUT on device %d\n" , env.ifindex); +fprintf (stdout,"Starting test on device %s\n" , env.ifname); err =dut_run (skel); }
Signature · 1 line
2.39.2
PATCH v2 2/2 selftests/bpf: improve error logs in XDP compliance test tool
In reply to Lorenzo BianconiImprove some error logs reported in the XDP compliance test tool
--- tools/testing/selftests/bpf/xdp_features.c | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-)
tools/testing/selftests/bpf/xdp_features.c +16 -7
@@ -152,20 +152,26 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)case 'D' :if (make_sockaddr (AF_INET6 , arg,DUT_ECHO_PORT , &env.dut_addr,NULL )) { -fprintf (stderr,"Invalid DUT address: %s\n" , arg); +fprintf (stderr, +"Invalid address assigned to the Device Under Test: %s\n" , + arg);return ARGP_ERR_UNKNOWN ; }break ;case 'C' :if (make_sockaddr (AF_INET6 , arg,DUT_CTRL_PORT , &env.dut_ctrl_addr,NULL )) { -fprintf (stderr,"Invalid DUT CTRL address: %s\n" , arg); +fprintf (stderr, +"Invalid address assigned to the Device Under Test: %s\n" , + arg);return ARGP_ERR_UNKNOWN ; }break ;case 'T' :if (make_sockaddr (AF_INET6 , arg,0 , &env.tester_addr,NULL )) { -fprintf (stderr,"Invalid Tester address: %s\n" , arg); +fprintf (stderr, +"Invalid address assigned to the Tester device: %s\n" , + arg);return ARGP_ERR_UNKNOWN ; }break ;
@@ -454,7 +460,8 @@ static int dut_run(struct xdp_features *skel) &key,sizeof (key), &val, sizeof(val), 0);if (err) { -fprintf (stderr,"bpf_map_lookup_elem failed\n" ); +fprintf (stderr, +"bpf_map_lookup_elem failed (%d)\n" , err); goto end_thread; }
@@ -496,7 +503,7 @@ static bool tester_collect_detected_cap(struct xdp_features *skel, err =bpf_map__lookup_elem (skel->maps.stats, &key,sizeof (key), &val,sizeof (val),0 );if (err) { -fprintf (stderr,"bpf_map_lookup_elem failed\n" ); +fprintf (stderr,"bpf_map_lookup_elem failed (%d)\n" , err);return false; }
@@ -574,7 +581,8 @@ static int tester_run(struct xdp_features *skel) sockfd =socket (AF_INET6 ,SOCK_STREAM ,0 );if (sockfd <0 ) { -fprintf (stderr,"Failed to create tester socket\n" ); +fprintf (stderr, +"Failed creating tester service control socket\n" );return -errno; }
@@ -584,7 +592,8 @@ static int tester_run(struct xdp_features *skel) err =connect (sockfd, (struct sockaddr *)&env.dut_ctrl_addr,sizeof (env.dut_ctrl_addr));if (err) { -fprintf (stderr,"Failed to connect to the DUT\n" ); +fprintf (stderr, +"Failed connecting to the Device Under Test control socket\n" );return -errno; }
Signature · 1 line
2.39.2
This series was applied to bpf/bpf-next.git (master) by Daniel Borkmann <[email protected]>:
Hello:
This series was applied to bpf/bpf-next.git (master) by Daniel Borkmann <[email protected]>:
Quoted 6 lines · On Thu, 9 Mar 2023 18:32:39 +0100 you wrote:
Use interface name instead of interface index in XDP compliance test tool logs. Improve XDP compliance test tool error messages.
Changes since v1:
- split previous patch in two logically separated patches
Quoted 6 lines
Lorenzo Bianconi (2):
selftests/bpf: use ifname instead of ifindex in XDP compliance test
tool
selftests/bpf: improve error logs in XDP compliance test tool[...]
Here is the summary with links:
- [bpf-next,v2,1/2] selftests/bpf: use ifname instead of ifindex in XDP compliance test tool
https://git.kernel.org/bpf/bpf-next/c/27a36bc3cdd5 - [bpf-next,v2,2/2] selftests/bpf: improve error logs in XDP compliance test tool https://git.kernel.org/bpf/bpf-next/c/c1cd734c1bb3
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html