return -ENOENT;
}
-int tfm_interface_set_private(struct tfm_interface_context *ictx,
- char *name, void *data)
+static struct tfm_interface *
+get_interface(struct tfm_interface_context *ictx, char *name)
{
struct tfm_interface *intf = NULL;
break;
}
+ return intf;
+}
+
+int tfm_interface_is_available(struct tfm_interface_context *ictx,
+ char *name)
+{
+ return !!(get_interface(ictx, name));
+}
+
+int tfm_interface_set_private(struct tfm_interface_context *ictx,
+ char *name, void *data)
+{
+ struct tfm_interface *intf;
+
+ intf = get_interface(ictx, name);
if (!intf) {
fprintf(stderr, "cannot find interface: %s\n", name);
return -ENOENT;
LIST_INSERT_HEAD(&ictx->interface_list, intf, entry);
}
+ if (LIST_EMPTY(&ictx->interface_list)) {
+ fprintf(stderr, "There is no available interfaces.\n");
+ goto err;
+ }
+
return ictx;
err:
ssize_t tfm_interface_send(struct tfm_interface *intf, void *buf, ssize_t len);
ssize_t tfm_interface_recv(struct tfm_interface *intf, void *buf, ssize_t len);
+int tfm_interface_is_available(struct tfm_interface_context *ictx, char *name);
int tfm_interface_set_private(struct tfm_interface_context *ictx,
char *name, void *data);
struct tfm_interface *tfm_interface_connect(struct tfm_interface_context *ictx);
unsigned long val;
char *endptr = NULL;
+ if (!tfm_interface_is_available(supported_interfaces,
+ "net")) {
+ fprintf(stderr,
+ "'-p' option is ignored since net interface is not available.\n");
+ continue;
+ }
+
val = strtoul(optarg, &endptr, 0);
if (*optarg == '\0' || (endptr && *endptr != '\0')) {
fprintf(stderr,