mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 06:34:12 +08:00
9bb8582efb
The VLAN code contains multiple spots that use tag, id and tci as identifiers for arguments and variables incorrectly and they actually contain or are expected to contain something different. Additionally types are used inconsistently (unsigned short vs u16) and identifiers are sometimes capitalized. - consistently use u16 for storing TCI, ID or QoS values - consistently use vlan_id and vlan_tci for storing the respective values - remove capitalization - add kdoc comment to netif_hwaccel_{rx,receive_skb} Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
67 lines
1.6 KiB
C
67 lines
1.6 KiB
C
/*
|
|
* IEEE 802.1Q GARP VLAN Registration Protocol (GVRP)
|
|
*
|
|
* Copyright (c) 2008 Patrick McHardy <kaber@trash.net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* version 2 as published by the Free Software Foundation.
|
|
*/
|
|
#include <linux/types.h>
|
|
#include <linux/if_vlan.h>
|
|
#include <net/garp.h>
|
|
#include "vlan.h"
|
|
|
|
#define GARP_GVRP_ADDRESS { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x21 }
|
|
|
|
enum gvrp_attributes {
|
|
GVRP_ATTR_INVALID,
|
|
GVRP_ATTR_VID,
|
|
__GVRP_ATTR_MAX
|
|
};
|
|
#define GVRP_ATTR_MAX (__GVRP_ATTR_MAX - 1)
|
|
|
|
static struct garp_application vlan_gvrp_app __read_mostly = {
|
|
.proto.group_address = GARP_GVRP_ADDRESS,
|
|
.maxattr = GVRP_ATTR_MAX,
|
|
.type = GARP_APPLICATION_GVRP,
|
|
};
|
|
|
|
int vlan_gvrp_request_join(const struct net_device *dev)
|
|
{
|
|
const struct vlan_dev_info *vlan = vlan_dev_info(dev);
|
|
__be16 vlan_id = htons(vlan->vlan_id);
|
|
|
|
return garp_request_join(vlan->real_dev, &vlan_gvrp_app,
|
|
&vlan_id, sizeof(vlan_id), GVRP_ATTR_VID);
|
|
}
|
|
|
|
void vlan_gvrp_request_leave(const struct net_device *dev)
|
|
{
|
|
const struct vlan_dev_info *vlan = vlan_dev_info(dev);
|
|
__be16 vlan_id = htons(vlan->vlan_id);
|
|
|
|
garp_request_leave(vlan->real_dev, &vlan_gvrp_app,
|
|
&vlan_id, sizeof(vlan_id), GVRP_ATTR_VID);
|
|
}
|
|
|
|
int vlan_gvrp_init_applicant(struct net_device *dev)
|
|
{
|
|
return garp_init_applicant(dev, &vlan_gvrp_app);
|
|
}
|
|
|
|
void vlan_gvrp_uninit_applicant(struct net_device *dev)
|
|
{
|
|
garp_uninit_applicant(dev, &vlan_gvrp_app);
|
|
}
|
|
|
|
int __init vlan_gvrp_init(void)
|
|
{
|
|
return garp_register_application(&vlan_gvrp_app);
|
|
}
|
|
|
|
void vlan_gvrp_uninit(void)
|
|
{
|
|
garp_unregister_application(&vlan_gvrp_app);
|
|
}
|