diff --git a/package/gluon-mesh-batman-adv/src/respondd.c b/package/gluon-mesh-batman-adv/src/respondd.c index 810dfc5932237c2b80a304adf2c8de96d8f0fe96..7d84d1499d23cc4f6f69565f64770dd12fd78097 100644 --- a/package/gluon-mesh-batman-adv/src/respondd.c +++ b/package/gluon-mesh-batman-adv/src/respondd.c @@ -232,25 +232,24 @@ static struct json_object * get_mesh(void) { return ret; } -static struct json_object * get_batman_adv_compat(void) { - FILE *f = fopen("/lib/gluon/mesh-batman-adv/compat", "r"); - if (!f) - return NULL; - - struct json_object *ret = NULL; +static struct json_object * get_batman_adv_compat(const char *version) { + int compat = 15; - int compat; - if (fscanf(f, "%i", &compat) == 1) - ret = json_object_new_int(compat); + if (!version) + return NULL; - fclose(f); + if (strcmp(version, "2013.4.0") == 0) + compat = 14; - return ret; + return json_object_new_int(compat); } static struct json_object * respondd_provider_nodeinfo(void) { struct json_object *ret = json_object_new_object(); + char *version = gluonutil_read_line("/sys/module/batman_adv/version"); + struct json_object *compat = get_batman_adv_compat(version); + struct json_object *network = json_object_new_object(); json_object_object_add(network, "addresses", get_addresses()); json_object_object_add(network, "mesh", get_mesh()); @@ -258,8 +257,8 @@ static struct json_object * respondd_provider_nodeinfo(void) { struct json_object *software = json_object_new_object(); struct json_object *software_batman_adv = json_object_new_object(); - json_object_object_add(software_batman_adv, "version", gluonutil_wrap_and_free_string(gluonutil_read_line("/sys/module/batman_adv/version"))); - json_object_object_add(software_batman_adv, "compat", get_batman_adv_compat()); + json_object_object_add(software_batman_adv, "version", gluonutil_wrap_and_free_string(version)); + json_object_object_add(software_batman_adv, "compat", compat); json_object_object_add(software, "batman-adv", software_batman_adv); json_object_object_add(ret, "software", software);