Пример #1
0
static inline int arp_fwd_proxy(struct in_device *in_dev,
				struct net_device *dev,	struct rtable *rt)
{
	struct in_device *out_dev;
	int imi, omi = -1;

	if (rt->dst.dev == dev)
		return 0;

	if (!IN_DEV_PROXY_ARP(in_dev))
		return 0;
	imi = IN_DEV_MEDIUM_ID(in_dev);
	if (imi == 0)
		return 1;
	if (imi == -1)
		return 0;

	

	out_dev = __in_dev_get_rcu(rt->dst.dev);
	if (out_dev)
		omi = IN_DEV_MEDIUM_ID(out_dev);

	return omi != imi && omi != -1;
}
Пример #2
0
/*
 * Check if we can use proxy ARP for this path
 */
static inline int arp_fwd_proxy(struct in_device *in_dev,
				struct net_device *dev,	struct rtable *rt)
{
	struct in_device *out_dev;
	int imi, omi = -1;

	if (rt->dst.dev == dev)
		return 0;

	if (!IN_DEV_PROXY_ARP(in_dev))
		return 0;

	if ((imi = IN_DEV_MEDIUM_ID(in_dev)) == 0)
		return 1;
	if (imi == -1)
		return 0;

	/* place to check for proxy_arp for routes */

	out_dev = __in_dev_get_rcu(rt->dst.dev);
	if (out_dev)
		omi = IN_DEV_MEDIUM_ID(out_dev);

	return (omi != imi && omi != -1);
}
Пример #3
0
Файл: arp.c Проект: 274914765/C
static inline int arp_fwd_proxy(struct in_device *in_dev, struct rtable *rt)
{
    struct in_device *out_dev;
    int imi, omi = -1;

    if (!IN_DEV_PROXY_ARP(in_dev))
        return 0;

    if ((imi = IN_DEV_MEDIUM_ID(in_dev)) == 0)
        return 1;
    if (imi == -1)
        return 0;

    /* place to check for proxy_arp for routes */

    if ((out_dev = in_dev_get(rt->u.dst.dev)) != NULL) {
        omi = IN_DEV_MEDIUM_ID(out_dev);
        in_dev_put(out_dev);
    }
    return (omi != imi && omi != -1);
}