/*      $NetBSD: qop_conf.c,v 1.4 2011/08/16 12:49:13 christos Exp $    */
/*      $KAME: qop_conf.c,v 1.3 2002/10/26 06:59:53 kjc Exp $   */
/*
* Copyright (C) 1999-2000
*      Sony Computer Science Laboratories, Inc.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the
*    documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY SONY CSL AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED.  IN NO EVENT SHALL SONY CSL OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/

#include <sys/param.h>
#include <sys/socket.h>
#include <net/if.h>
#include <stdio.h>
#include <string.h>

#include <altq/altq.h>
#include "altq_qop.h"

typedef int (interface_parser_t)(const char *, int, char **);
typedef int (class_parser_t)(const char *, const char *, const char *,
                            int, char **);

extern interface_parser_t       null_interface_parser;
extern class_parser_t           null_class_parser;
extern interface_parser_t       cbq_interface_parser;
extern class_parser_t           cbq_class_parser;
extern interface_parser_t       hfsc_interface_parser;
extern class_parser_t           hfsc_class_parser;
extern interface_parser_t       red_interface_parser;
extern interface_parser_t       rio_interface_parser;
extern interface_parser_t       blue_interface_parser;
extern interface_parser_t       wfq_interface_parser;
extern interface_parser_t       fifoq_interface_parser;
extern interface_parser_t       priq_interface_parser;
extern class_parser_t           priq_class_parser;
extern interface_parser_t       jobs_interface_parser;
extern class_parser_t           jobs_class_parser;

struct qdisc_parser qdisc_parser[] = {
       {"null",        null_interface_parser,  null_class_parser},
       {"cbq",         cbq_interface_parser,   cbq_class_parser},
       {"hfsc",        hfsc_interface_parser,  hfsc_class_parser},
       {"red",         red_interface_parser,   NULL},
       {"rio",         rio_interface_parser,   NULL},
       {"blue",        blue_interface_parser,  NULL},
       {"wfq",         wfq_interface_parser,   NULL},
       {"fifoq",       fifoq_interface_parser, NULL},
       {"priq",        priq_interface_parser,  priq_class_parser},
       {"jobs",        jobs_interface_parser,  jobs_class_parser},
       {NULL, NULL, NULL}
};