/*
 *      dnsutl - utilities to make DNS easier to configure
 *      Copyright (C) 1996, 1999, 2006, 2007 Peter Miller
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 3 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program. If not, see
 *      <http://www.gnu.org/licenses/>.
 */

#include <ac/ctype.h>
#include <ac/string.h>

#include <mac.h>
#include <mem.h>
#include <srrf.h>
#include <srrf/private.h>


static void
a_check(srrf_t *rp)
{
    string_ty       *tmp;

    tmp = mac_cannonicalize(rp->arg.string[0]);
    if (tmp)
    {
        /*
         * replace the address given with one
         * in a canonical form.
         */
        str_free(rp->arg.string[0]);
        rp->arg.string[0] = tmp;
    }
    else
    {
        srrf_lex_error
        (
            "the string \"%s\" is not a legal Ethernet address",
            rp->arg.string[0]->str_text
        );
    }
}


static srrf_type_ty type[] =
{
    {"a", 1, a_check, 0, 0, 0, 0, 0,},
};


/*
 * This symbol describes the class.
 * It should be the only symbol exported from this file.
 */
srrf_class_ty   srrf_class_ether =
{
    "ether",
    type,
    SIZEOF(type)
};


syntax highlighted by Code2HTML, v. 0.9.1