%{
/*
 * Copyright 2016 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

%}
struct string_match {
  char *vendor_class;
  char *species;
};
%%
6328-2Re, "InnoMedia VoIP adapter"
AEROHIVE, "Aerohive Wifi AP"
AirStation Series BUFFALO INC., "Buffalo Wifi AP"
ArubaAP, "Aruba Wifi AP"
ArubaInstantAP, "Aruba Wifi AP"
ccp.avaya.com, "Avaya IP Phone"
Cisco 802.11n AP Bridge, "Cisco Wifi AP"
Dell Network Printer, "Dell Printer"
DUNEHD, "Dune media player"
ecobee1, "ecobee thermostat"
HD409N, "ZaapTV"
Hewlett-Packard JetDirect, "HP Printer"
Hewlett-Packard LaserJet, "HP LaserJet"
Hewlett-Packard OfficeJet, "HP OfficeJet"
iDRAC, "Dell Remote Access Controller"
ipphone.mitel.com, "Mitel IP Phone"
IP2061, "Icon IP Phone"
IWATSUIP, "Icon IP Phone"
MC361, "Oki Printer"
MC362, "Oki Printer"
MERAKI, "Meraki Wifi AP"
MicroChip Network Stack, "Microchip board"
Motorola_AP, "Motorola Wifi AP"
OptiIpPhone, "Siemens IP Phone"
PS3, "Sony Playstation 3"
PS4, "Sony Playstation 4"
PS Vita, "Sony Playstation Vita"
PS Vita TV, "Sony Playstation Vita"
Ruckus CPE, "Ruckus Wifi AP"
SAMSUNG Network Printer, "Samsung Printer"
SEC_ITP, "Samsung IP Phone"
ShoreTel IP Phone, "ShoreTel IP Phone"
SIP-T38G, "Yealink IP Phone"
SSG5-Serial-WLAN, "Juniper Gateway"
TOSHIBA IPedge, "Toshiba VoIP adapter"
ubnt, "Ubiquiti AP"
VIZIO VIA, "Vizio TV"
Withings00, "Withings Scale"
XBOX 1.0, "Xbox"
Xbox 360, "Xbox 360"
Xerox Phaser, "Xerox Printer"
XEROX Network Printer, "Xerox Printer"
yealink, "Yealink IP Phone"
%%
