Skip to content
Snippets Groups Projects
Select Git revision
  • 7f3f8d43a49e46dafdf53a7e27b23938903ef23f
  • experimental default protected
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master protected
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • experimental-2025-10-06
  • experimental-2025-10-06-base
  • experimental-2025-10-02
  • experimental-2025-10-02-base
  • experimental-2025-09-19
  • experimental-2025-09-19-base
  • experimental-2025-09-15
  • experimental-2025-09-15-base
  • experimental-2025-09-12
  • experimental-2025-09-12-base
  • experimental-2025-09-11
  • experimental-2025-09-11-base
  • experimental-2025-09-08
  • experimental-2025-09-08-base
  • experimental-2025-09-07
  • experimental-2025-09-07-base
  • experimental-2025-09-05
  • experimental-2025-09-05-base
  • experimental-2025-09-03
  • experimental-2025-09-03-base
41 results

ath79-generic

respondd.c 3.32 KiB
/* SPDX-FileCopyrightText: 2021, Aiyion <gluon@aiyionpri.me> */
/* SPDX-FileCopyrightText: 2016, Matthias Schiffer <mschiffer@universe-factory.net> */
/* SPDX-License-Identifier: BSD-2-Clause */

#include <respondd.h>

#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#include <json-c/json.h>
#include <libgluonutil.h>
#include <uci.h>


static struct json_object * get_bandwidth_limit(void) {
	bool enabled = false;
	int egress = -1;
	int ingress = -1;

	struct json_object *ret = json_object_new_object();

	struct uci_context *ctx = uci_alloc_context();
	if (!ctx)
		goto disabled;
	ctx->flags &= ~UCI_FLAG_STRICT;

	struct uci_package *p;
	if (uci_load(ctx, "gluon", &p))
		goto disabled;

	struct uci_section *s = uci_lookup_section(ctx, p, "mesh_vpn");
	if (!s)
		goto disabled;

	const char *enabled_str = uci_lookup_option_string(ctx, s, "limit_enabled");
	if (enabled_str && strcmp(enabled_str, "1"))
		goto disabled;

	enabled = true;

	const char *egress_str = uci_lookup_option_string(ctx, s, "limit_egress");
	if (egress_str && strcmp(egress_str, "-"))
		egress = atoi(egress_str);

	const char *ingress_str = uci_lookup_option_string(ctx, s, "limit_ingress");
	if (ingress_str && strcmp(ingress_str, "-"))
		ingress = atoi(ingress_str);

	if (egress >= 0)
		json_object_object_add(ret, "egress", json_object_new_int(egress));
	if (ingress >= 0)
		json_object_object_add(ret, "ingress", json_object_new_int(ingress));

disabled:
	if (ctx)
		uci_free_context(ctx);

	json_object_object_add(ret, "enabled", json_object_new_boolean(enabled));
	return ret;
}

char * read_stdout(const char *command) {
	FILE *f = popen(command, "r");
	if (!f)
		return NULL;

	char *line = NULL;
	size_t len = 0;