Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32d58f65 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "net: core: Send ARP probe and trigger RTM_NEWNEIGH"

parents e68b91fc a71b668d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ enum {
	NEIGH_VAR_GC_THRESH1,
	NEIGH_VAR_GC_THRESH2,
	NEIGH_VAR_GC_THRESH3,
	NEIGH_VAR_PROBE,
	NEIGH_VAR_MAX
};

+22 −3
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ static void __neigh_notify(struct neighbour *n, int type, int flags);
static void neigh_update_notify(struct neighbour *neigh);
static int pneigh_ifdown(struct neigh_table *tbl, struct net_device *dev);

static unsigned int neigh_probe_enable;
#ifdef CONFIG_PROC_FS
static const struct file_operations neigh_stat_seq_fops;
#endif
@@ -1258,9 +1259,20 @@ struct neighbour *neigh_event_ns(struct neigh_table *tbl,
{
	struct neighbour *neigh = __neigh_lookup(tbl, saddr, dev,
						 lladdr || !dev->addr_len);
	if (neigh)
	if (neigh) {
		if (neigh_probe_enable) {
			if (!(neigh->nud_state == NUD_REACHABLE)) {
				neigh_update(neigh, lladdr, NUD_STALE,
					     NEIGH_UPDATE_F_OVERRIDE);
				write_lock(&neigh->lock);
				neigh_probe(neigh);
				neigh_update_notify(neigh);
			}
		} else {
			neigh_update(neigh, lladdr, NUD_STALE,
				     NEIGH_UPDATE_F_OVERRIDE);
		}
	}
	return neigh;
}
EXPORT_SYMBOL(neigh_event_ns);
@@ -3107,6 +3119,12 @@ static struct neigh_sysctl_table {
			.extra2		= &int_max,
			.proc_handler	= proc_dointvec_minmax,
		},
		[NEIGH_VAR_PROBE] = {
			.procname	= "neigh_probe",
			.maxlen		= sizeof(int),
			.mode		= 0644,
			.proc_handler	= proc_dointvec,
		},
		{},
	},
};
@@ -3142,6 +3160,7 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
		t->neigh_vars[NEIGH_VAR_GC_THRESH1].data = &tbl->gc_thresh1;
		t->neigh_vars[NEIGH_VAR_GC_THRESH2].data = &tbl->gc_thresh2;
		t->neigh_vars[NEIGH_VAR_GC_THRESH3].data = &tbl->gc_thresh3;
		t->neigh_vars[NEIGH_VAR_PROBE].data  = &neigh_probe_enable;
	}

	if (handler) {