/*
* protini.h - Definitions for processing an NDIS protocol.ini file
*
* Copyright (C) 1998-2003 Gero Kuhlmann <gero@gkminix.han.de>
*
* 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 2 of the License, or
* 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, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: protini.h,v 1.4 2003/01/25 23:29:42 gkminix Exp $
*/
#ifndef _PROTINI_H
#define _PROTINI_H_
/*
**************************************************************************
*
* Definitions for protocol.ini memory image layout
*
**************************************************************************
*/
#ifndef NO_BINARY
/*
* Everything in this file has to be in packed structures.
*/
#ifdef USE_PRAGMA
#pragma pack(1)
#endif
#ifdef USE_PRAGMA_ALIGN
#pragma options align=packed
#endif
/*
* Header for each module definition (bracketed section name)
*/
struct module_config {
struct i_addr next PACKED; /* far ptr to next module */
struct i_addr prev PACKED; /* far ptr to prev module */
__u8 name[16] PACKED; /* module name */
};
#define MODCONF_SIZE 24 /* size of module header */
/*
* Header for each keyword entry (name in front of equal sign)
*/
struct keyword_entry {
struct i_addr next PACKED; /* far ptr to next keyword */
struct i_addr prev PACKED; /* far ptr to prev keyword */
__u8 name[16] PACKED; /* name of keyword */
__u16 numparams PACKED; /* number of parameters */
};
#define KEYWORD_SIZE 26 /* size of keyword header */
/*
* Header for each parameter value
*/
struct param_struct {
__u16 paramtype PACKED; /* type of parameter */
__u16 paramlen PACKED; /* length of parameter value */
};
#define PARAM_SIZE 4 /* size of parameter struct */
#define PARAM_NUM 0 /* numerical parameter value */
#define PARAM_STRING 1 /* string parameter value */
/*
* Turnoff structure packing and return to normal data alignment.
*/
#ifdef USE_PRAGMA
#pragma pack()
#endif
#ifdef USE_PRAGMA_ALIGN
#pragma options align=reset
#endif
#endif /* NO_BINARY */
/*
**************************************************************************
*
* External routines
*
**************************************************************************
*/
extern char *readprotini __P((char *fname));
extern void parseprotini __P((char *protini, __u8 **image, size_t *imglen));
#endif
syntax highlighted by Code2HTML, v. 0.9.1