summaryrefslogtreecommitdiff
path: root/commands-wds.c
diff options
context:
space:
mode:
Diffstat (limited to 'commands-wds.c')
-rw-r--r--commands-wds.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/commands-wds.c b/commands-wds.c
index aa57d03..fdf9003 100644
--- a/commands-wds.c
+++ b/commands-wds.c
@@ -170,3 +170,31 @@ cmd_wds_reset_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_m
qmi_set_wds_reset_request(msg);
return QMI_CMD_REQUEST;
}
+
+#define cmd_wds_set_ip_family_cb no_cb
+static enum qmi_cmd_result
+cmd_wds_set_ip_family_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+ struct qmi_wds_set_ip_family_request ipf_req;
+ const struct ip_modes {
+ const char *name;
+ const QmiWdsIpFamily mode;
+ } modes[] = {
+ { "ipv4", QMI_WDS_IP_FAMILY_IPV4 },
+ { "ipv6", QMI_WDS_IP_FAMILY_IPV6 },
+ { "unspecified", QMI_WDS_IP_FAMILY_UNSPECIFIED },
+ };
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(modes); i++) {
+ if (strcasecmp(modes[i].name, arg) != 0)
+ continue;
+
+ qmi_set(&ipf_req, preference, modes[i].mode);
+ qmi_set_wds_set_ip_family_request(msg, &ipf_req);
+ return QMI_CMD_REQUEST;
+ }
+
+ uqmi_add_error("Invalid value (valid: ipv4, ipv6, unspecified)");
+ return QMI_CMD_EXIT;
+}