gluon-radv-filterd: Seperate macros for printf() and scanf()

This commit is contained in:
Jan-Philipp Litza 2017-04-30 12:23:23 +02:00
parent ccfd102780
commit 31660c7402
No known key found for this signature in database
GPG Key ID: 1FB658053CE27196
3 changed files with 6 additions and 5 deletions

View File

@ -348,7 +348,7 @@ static void update_tqs() {
while (fgetc(f) != '\n') {}
while (fgetc(f) != '\n') {}
while (fscanf(f, " %*[*+] " F_MAC "%*[0-9 -] (%*3u) via " F_MAC " %*[^]]]\n",
F_MAC_VAR(&mac_a), F_MAC_VAR(&mac_b)) == 12) {
F_MAC_VAR_REF(mac_a), F_MAC_VAR_REF(mac_b)) == 12) {
foreach(router, G.routers) {
if (!memcmp(router->src, mac_a, sizeof(macaddr_t))) {
@ -373,7 +373,7 @@ static void update_tqs() {
while (fgetc(f) != '\n');
while (fgetc(f) != '\n');
while (fscanf(f, F_MAC " %*fs (%hhu) %*[^\n]\n",
F_MAC_VAR(&mac_a), &tq) == 7) {
F_MAC_VAR_REF(mac_a), &tq) == 7) {
foreach(router, G.routers) {
if (!memcmp(router->originator, mac_a, sizeof(macaddr_t))) {
@ -403,7 +403,7 @@ static void update_tqs() {
// skip header
while (fgetc(f) != '\n');
while (fgetc(f) != '\n');
while (fscanf(f, " * " F_MAC " [%*5s] %*f", F_MAC_VAR(&mac_a)) == 6) {
while (fscanf(f, " * " F_MAC " [%*5s] %*f", F_MAC_VAR_REF(mac_a)) == 6) {
foreach(router, G.routers) {
if (!memcmp(router->src, mac_a, sizeof(macaddr_t))) {
DEBUG_MSG("Found router " F_MAC " in transtable_local, assigning TQ %d", F_MAC_VAR(router->src), LOCAL_TQ);

View File

@ -4,6 +4,7 @@
#define F_MAC "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx"
#define F_MAC_LEN 17
#define F_MAC_IGN "%*2x:%*2x:%*2x:%*2x:%*2x:%*2x"
#define F_MAC_VAR(var) var[0], var[1], var[2], var[3], var[4], var[5]
#define F_MAC_VAR(var) (var)[0], (var)[1], (var)[2], (var)[3], (var)[4], (var)[5]
#define F_MAC_VAR_REF(var) &(var)[0], &(var)[1], &(var)[2], &(var)[3], &(var)[4], &(var)[5]
typedef uint8_t macaddr_t[ETH_ALEN];

View File

@ -18,7 +18,7 @@ static struct json_object * get_radv_filter() {
return NULL;
while (getline(&line, &len, f) > 0) {
if (sscanf(line, "-s " F_MAC " -j ACCEPT\n", F_MAC_VAR(&mac)) == ETH_ALEN)
if (sscanf(line, "-s " F_MAC " -j ACCEPT\n", F_MAC_VAR_REF(mac)) == ETH_ALEN)
break;
}
free(line);