projects
/
project
/
netifd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
interface-ip: DNS name server sorting support in resolv.conf.auto
[project/netifd.git]
/
iprule.c
diff --git
a/iprule.c
b/iprule.c
index
0ff02de
..
4e3dd15
100644
(file)
--- a/
iprule.c
+++ b/
iprule.c
@@
-15,7
+15,6
@@
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
-#include <unistd.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
@@
-28,6
+27,7
@@
#include "system.h"
struct vlist_tree iprules;
#include "system.h"
struct vlist_tree iprules;
+static bool iprules_flushed = false;
static unsigned int iprules_counter[2];
enum {
static unsigned int iprules_counter[2];
enum {
@@
-59,7
+59,7
@@
static const struct blobmsg_policy rule_attr[__RULE_MAX] = {
[RULE_GOTO] = { .name = "goto", .type = BLOBMSG_TYPE_INT32 },
};
[RULE_GOTO] = { .name = "goto", .type = BLOBMSG_TYPE_INT32 },
};
-const struct
config
_param_list rule_attr_list = {
+const struct
uci_blob
_param_list rule_attr_list = {
.n_params = __RULE_MAX,
.params = rule_attr,
};
.n_params = __RULE_MAX,
.params = rule_attr,
};
@@
-208,6
+208,11
@@
error:
void
iprule_update_start(void)
{
void
iprule_update_start(void)
{
+ if (!iprules_flushed) {
+ system_flush_iprules();
+ iprules_flushed = true;
+ }
+
iprules_counter[0] = 1;
iprules_counter[1] = 1;
vlist_update(&iprules);
iprules_counter[0] = 1;
iprules_counter[1] = 1;
vlist_update(&iprules);
@@
-247,6
+252,5
@@
iprule_update_rule(struct vlist_tree *tree,
static void __init
iprule_init_list(void)
{
static void __init
iprule_init_list(void)
{
- system_flush_iprules();
vlist_init(&iprules, rule_cmp, iprule_update_rule);
}
vlist_init(&iprules, rule_cmp, iprule_update_rule);
}