summaryrefslogtreecommitdiff
path: root/drivers/staging/wlags49_h2/wl_profile.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/wlags49_h2/wl_profile.c')
-rw-r--r--drivers/staging/wlags49_h2/wl_profile.c995
1 files changed, 0 insertions, 995 deletions
diff --git a/drivers/staging/wlags49_h2/wl_profile.c b/drivers/staging/wlags49_h2/wl_profile.c
deleted file mode 100644
index 28cc5765e5c1..000000000000
--- a/drivers/staging/wlags49_h2/wl_profile.c
+++ /dev/null
@@ -1,995 +0,0 @@
-/*******************************************************************************
- * Agere Systems Inc.
- * Wireless device driver for Linux (wlags49).
- *
- * Copyright (c) 1998-2003 Agere Systems Inc.
- * All rights reserved.
- * http://www.agere.com
- *
- * Initially developed by TriplePoint, Inc.
- * http://www.triplepoint.com
- *
- *------------------------------------------------------------------------------
- *
- * This file defines routines required to parse configuration parameters
- * listed in a config file, if that config file exists.
- *
- *------------------------------------------------------------------------------
- *
- * SOFTWARE LICENSE
- *
- * This software is provided subject to the following terms and conditions,
- * which you should read carefully before using the software. Using this
- * software indicates your acceptance of these terms and conditions. If you do
- * not agree with these terms and conditions, do not use the software.
- *
- * Copyright © 2003 Agere Systems Inc.
- * All rights reserved.
- *
- * Redistribution and use in source or binary forms, with or without
- * modifications, are permitted provided that the following conditions are met:
- *
- * . Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following Disclaimer as comments in the code as
- * well as in the documentation and/or other materials provided with the
- * distribution.
- *
- * . 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.
- *
- * . Neither the name of Agere Systems Inc. nor the names of the contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * Disclaimer
- *
- * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
- * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
- * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. 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, INCLUDING, BUT NOT LIMITED TO, 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.
- *
- ******************************************************************************/
-
-/* Only include this file if USE_PROFILE is defined */
-#ifdef USE_PROFILE
-
-
-
-
-/*******************************************************************************
- * constant definitions
- ******************************************************************************/
-
-
-/* Allow support for calling system fcns to parse config file */
-#define __KERNEL_SYSCALLS__
-
-
-
-
-/*******************************************************************************
- * include files
- ******************************************************************************/
-#include <wl_version.h>
-
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/unistd.h>
-#include <asm/uaccess.h>
-#include <limits.h>
-
-#define BIN_DL 1
-
-#include <debug.h>
-#include <hcf.h>
-/* #include <hcfdef.h> */
-
-#include <wl_if.h>
-#include <wl_internal.h>
-#include <wl_util.h>
-#include <wl_enc.h>
-#include <wl_main.h>
-#include <wl_profile.h>
-
-
-/* Definition needed to prevent unresolved external in unistd.h */
-static int errno;
-
-#if DBG
-extern p_u32 DebugFlag;
-#endif
-
-int parse_yes_no(char *value);
-
-
-int parse_yes_no(char *value)
-{
-int rc = 0; /* default to NO for invalid parameters */
-
- if (strlen(value) == 1) {
- if ((value[0] | ('Y'^'y')) == 'y')
- rc = 1;
- /* } else { */
- /* this should not be debug time info, it is an enduser data entry error ;? */
- /* DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_MICROWAVE_ROBUSTNESS); */
- }
- return rc;
-} /* parse_yes_no */
-
-
-/*******************************************************************************
- * parse_config()
- *******************************************************************************
- *
- * DESCRIPTION:
- *
- * This function opens the device's config file and parses the options from
- * it, so that it can properly configure itself. If no configuration file
- * or configuration is present, then continue to use the options already
- * parsed from config.opts or wireless.opts.
- *
- * PARAMETERS:
- *
- * dev - a pointer to the device's net_device structure
- *
- * RETURNS:
- *
- * N/A
- *
- ******************************************************************************/
-void parse_config(struct net_device *dev)
-{
- int file_desc;
-#if 0 /* BIN_DL */
- int rc;
- char *cp = NULL;
-#endif /* BIN_DL */
- char buffer[MAX_LINE_SIZE];
- char filename[MAX_LINE_SIZE];
- mm_segment_t fs;
- struct wl_private *wvlan_config = NULL;
- ENCSTRCT sEncryption;
-
- /* Get the wavelan specific info for this device */
- wvlan_config = dev->priv;
- if (wvlan_config == NULL) {
- DBG_ERROR(DbgInfo, "Wavelan specific info struct not present?\n");
- return;
- }
-
- /* setup the default encryption string */
- strcpy(wvlan_config->szEncryption, DEF_CRYPT_STR);
-
- /* Obtain a user-space process context, storing the original context */
- fs = get_fs();
- set_fs(get_ds());
-
- /* Determine the filename for this device and attempt to open it */
- sprintf(filename, "%s%s", ROOT_CONFIG_FILENAME, dev->name);
- file_desc = open(filename, O_RDONLY, 0);
- if (file_desc != -1) {
- DBG_TRACE(DbgInfo, "Wireless config file found. Parsing options...\n");
-
- /* Read out the options */
- while (readline(file_desc, buffer))
- translate_option(buffer, wvlan_config);
- /* Close the file */
- close(file_desc); /* ;?even if file_desc == -1 ??? */
- } else {
- DBG_TRACE(DbgInfo, "No iwconfig file found for this device; "
- "config.opts or wireless.opts will be used\n");
- }
- /* Return to the original context */
- set_fs(fs);
-
- /* convert the WEP keys, if read in as key1, key2, type of data */
- if (wvlan_config->EnableEncryption) {
- memset(&sEncryption, 0, sizeof(sEncryption));
-
- wl_wep_decode(CRYPT_CODE, &sEncryption,
- wvlan_config->szEncryption);
-
- /* the Linux driver likes to use 1-4 for the key IDs, and then
- convert to 0-3 when sending to the card. The Windows code
- base used 0-3 in the API DLL, which was ported to Linux. For
- the sake of the user experience, we decided to keep 0-3 as the
- numbers used in the DLL; and will perform the +1 conversion here.
- We could have converted the entire Linux driver, but this is
- less obtrusive. This may be a "todo" to convert the whole driver */
- sEncryption.wEnabled = wvlan_config->EnableEncryption;
- sEncryption.wTxKeyID = wvlan_config->TransmitKeyID - 1;
-
- memcpy(&sEncryption.EncStr, &wvlan_config->DefaultKeys,
- sizeof(CFG_DEFAULT_KEYS_STRCT));
-
- memset(wvlan_config->szEncryption, 0, sizeof(wvlan_config->szEncryption));
-
- wl_wep_code(CRYPT_CODE, wvlan_config->szEncryption, &sEncryption,
- sizeof(sEncryption));
- }
-
- /* decode the encryption string for the call to wl_commit() */
- wl_wep_decode(CRYPT_CODE, &sEncryption, wvlan_config->szEncryption);
-
- wvlan_config->TransmitKeyID = sEncryption.wTxKeyID + 1;
- wvlan_config->EnableEncryption = sEncryption.wEnabled;
-
- memcpy(&wvlan_config->DefaultKeys, &sEncryption.EncStr,
- sizeof(CFG_DEFAULT_KEYS_STRCT));
-
-#if 0 /* BIN_DL */
- /* Obtain a user-space process context, storing the original context */
- fs = get_fs();
- set_fs(get_ds());
-
- /* ;?just to fake something */
- strcpy(/*wvlan_config->fw_image_*/filename, "/etc/agere/fw.bin");
- file_desc = open(/*wvlan_config->fw_image_*/filename, 0, 0);
- if (file_desc == -1) {
- DBG_ERROR(DbgInfo, "No image file found\n");
- } else {
- DBG_TRACE(DbgInfo, "F/W image file found\n");
-#define DHF_ALLOC_SIZE 96000 /* just below 96K, let's hope it suffices for now and for the future */
- cp = vmalloc(DHF_ALLOC_SIZE);
- if (cp == NULL) {
- DBG_ERROR(DbgInfo, "error in vmalloc\n");
- } else {
- rc = read(file_desc, cp, DHF_ALLOC_SIZE);
- if (rc == DHF_ALLOC_SIZE) {
- DBG_ERROR(DbgInfo, "buffer too small, %d\n", DHF_ALLOC_SIZE);
- } else if (rc > 0) {
- DBG_TRACE(DbgInfo, "read O.K.: %d bytes %.12s\n", rc, cp);
- rc = read(file_desc, &cp[rc], 1);
- if (rc == 0)
- DBG_TRACE(DbgInfo, "no more to read\n");
- }
- if (rc != 0) {
- DBG_ERROR(DbgInfo, "file not read in one swoop or other error"\
- ", give up, too complicated, rc = %0X\n", rc);
- }
- vfree(cp);
- }
- close(file_desc);
- }
- set_fs(fs); /* Return to the original context */
-#endif /* BIN_DL */
-
- return;
-} /* parse_config */
-
-/*******************************************************************************
- * readline()
- *******************************************************************************
- *
- * DESCRIPTION:
- *
- * This function reads in data from a given file one line at a time,
- * converting the detected newline character '\n' to a null '\0'. Note that
- * the file descriptor must be valid before calling this function.
- *
- * PARAMETERS:
- *
- * filedesc - the file descriptor for the open configuration file
- * buffer - a buffer pointer, passed in by the caller, to which the
- * line will be stored.
- *
- * RETURNS:
- *
- * the number of bytes read
- * -1 on error
- *
- ******************************************************************************/
-int readline(int filedesc, char *buffer)
-{
- int result = -1;
- int bytes_read = 0;
- /*------------------------------------------------------------------------*/
-
- /* Make sure the file descriptor is good */
- if (filedesc != -1) {
- /* Read in from the file byte by byte until a newline is reached */
- while ((result = read(filedesc, &buffer[bytes_read], 1)) == 1) {
- if (buffer[bytes_read] == '\n') {
- buffer[bytes_read] = '\0';
- bytes_read++;
- break;
- }
- bytes_read++;
- }
- }
-
- /* Return the number of bytes read */
- if (result == -1)
- return result;
- else
- return bytes_read;
-} /* readline */
-/*============================================================================*/
-
-/*******************************************************************************
- * translate_option()
- *******************************************************************************
- *
- * DESCRIPTION:
- *
- * This function takes a line read in from the config file and parses out
- * the key/value pairs. It then determines which key has been parsed and sets
- * the card's configuration based on the value given.
- *
- * PARAMETERS:
- *
- * buffer - a buffer containing a line to translate
- * config - a pointer to the device's private adapter structure
- *
- * RETURNS:
- *
- * N/A
- *
- ******************************************************************************/
-void translate_option(char *buffer, struct wl_private *lp)
-{
- unsigned int value_convert = 0;
- int string_length = 0;
- char *key = NULL;
- char *value = NULL;
- u_char mac_value[ETH_ALEN];
- /*------------------------------------------------------------------------*/
-
- if (buffer == NULL || lp == NULL) {
- DBG_ERROR(DbgInfo, "Config file buffer and/or wavelan buffer ptr NULL\n");
- return;
- }
-
- ParseConfigLine(buffer, &key, &value);
-
- if (key == NULL || value == NULL)
- return;
-
- /* Determine which key it is and perform the appropriate action */
-
- /* Configuration parameters used in all scenarios */
-#if DBG
- /* handle DebugFlag as early as possible so it starts its influence as early
- * as possible
- */
- if (strcmp(key, PARM_NAME_DEBUG_FLAG) == 0) {
- if (DebugFlag == ~0) { /* if DebugFlag is not specified on the command line */
- if (DbgInfo->DebugFlag == 0) { /* if pc_debug did not set DebugFlag (i.e.pc_debug is
- * not specified or specified outside the 4-8 range
- */
- DbgInfo->DebugFlag |= DBG_DEFAULTS;
- }
- } else {
- DbgInfo->DebugFlag = simple_strtoul(value, NULL, 0); /* ;?DebugFlag; */
- }
- DbgInfo->DebugFlag = simple_strtoul(value, NULL, 0); /* ;?Delete ASAP */
- }
-#endif /* DBG */
- if (strcmp(key, PARM_NAME_AUTH_KEY_MGMT_SUITE) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_AUTH_KEY_MGMT_SUITE, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_AUTH_KEY_MGMT_SUITE) || (value_convert <= PARM_MAX_AUTH_KEY_MGMT_SUITE))
- lp->AuthKeyMgmtSuite = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_AUTH_KEY_MGMT_SUITE);
- } else if (strcmp(key, PARM_NAME_BRSC_2GHZ) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_BRSC_2GHZ, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_BRSC) || (value_convert <= PARM_MAX_BRSC))
- lp->brsc[0] = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_BRSC_2GHZ);
- } else if (strcmp(key, PARM_NAME_BRSC_5GHZ) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_BRSC_5GHZ, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_BRSC) || (value_convert <= PARM_MAX_BRSC))
- lp->brsc[1] = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_BRSC_5GHZ);
- } else if ((strcmp(key, PARM_NAME_DESIRED_SSID) == 0) || (strcmp(key, PARM_NAME_OWN_SSID) == 0)) {
- DBG_TRACE(DbgInfo, "SSID, value: %s\n", value);
-
- memset(lp->NetworkName, 0, (PARM_MAX_NAME_LEN + 1));
-
- /* Make sure the value isn't too long */
- string_length = strlen(value);
- if (string_length > PARM_MAX_NAME_LEN) {
- DBG_WARNING(DbgInfo, "SSID too long; will be truncated\n");
- string_length = PARM_MAX_NAME_LEN;
- }
-
- memcpy(lp->NetworkName, value, string_length);
- }
-#if 0
- else if (strcmp(key, PARM_NAME_DOWNLOAD_FIRMWARE) == 0) {
- DBG_TRACE(DbgInfo, "DOWNLOAD_FIRMWARE, value: %s\n", value);
- memset(lp->fw_image_filename, 0, (MAX_LINE_SIZE + 1));
- /* Make sure the value isn't too long */
- string_length = strlen(value);
- if (string_length > MAX_LINE_SIZE)
- DBG_WARNING(DbgInfo, "F/W image file name too long; will be ignored\n");
- else
- memcpy(lp->fw_image_filename, value, string_length);
- }
-#endif
- else if (strcmp(key, PARM_NAME_ENABLE_ENCRYPTION) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_ENABLE_ENCRYPTION, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_ENABLE_ENCRYPTION) && (value_convert <= PARM_MAX_ENABLE_ENCRYPTION))
- lp->EnableEncryption = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_ENABLE_ENCRYPTION);
- } else if (strcmp(key, PARM_NAME_ENCRYPTION) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_ENCRYPTION, value);
-
- memset(lp->szEncryption, 0, sizeof(lp->szEncryption));
-
- /* Make sure the value isn't too long */
- string_length = strlen(value);
- if (string_length > sizeof(lp->szEncryption)) {
- DBG_WARNING(DbgInfo, "%s too long; will be truncated\n", PARM_NAME_ENCRYPTION);
- string_length = sizeof(lp->szEncryption);
- }
-
- memcpy(lp->szEncryption, value, string_length);
- } else if (strcmp(key, PARM_NAME_KEY1) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_KEY1, value);
-
- if (is_valid_key_string(value)) {
- memset(lp->DefaultKeys.key[0].key, 0, MAX_KEY_SIZE);
-
- key_string2key(value, &lp->DefaultKeys.key[0]);
- } else {
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_KEY1);
- }
- } else if (strcmp(key, PARM_NAME_KEY2) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_KEY2, value);
-
- if (is_valid_key_string(value)) {
- memset(lp->DefaultKeys.key[1].key, 0, MAX_KEY_SIZE);
-
- key_string2key(value, &lp->DefaultKeys.key[1]);
- } else {
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_KEY2);
- }
- } else if (strcmp(key, PARM_NAME_KEY3) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_KEY3, value);
-
- if (is_valid_key_string(value)) {
- memset(lp->DefaultKeys.key[2].key, 0, MAX_KEY_SIZE);
-
- key_string2key(value, &lp->DefaultKeys.key[2]);
- } else {
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_KEY3);
- }
- } else if (strcmp(key, PARM_NAME_KEY4) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_KEY4, value);
-
- if (is_valid_key_string(value)) {
- memset(lp->DefaultKeys.key[3].key, 0, MAX_KEY_SIZE);
-
- key_string2key(value, &lp->DefaultKeys.key[3]);
- } else {
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_KEY4);
- }
- }
- /* New Parameters for WARP */
- else if (strcmp(key, PARM_NAME_LOAD_BALANCING) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_LOAD_BALANCING, value);
- lp->loadBalancing = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_MEDIUM_DISTRIBUTION) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_MEDIUM_DISTRIBUTION, value);
- lp->mediumDistribution = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_MICROWAVE_ROBUSTNESS) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_MICROWAVE_ROBUSTNESS, value);
- lp->MicrowaveRobustness = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_MULTICAST_RATE) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_MULTICAST_RATE, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
-
- if ((value_convert >= PARM_MIN_MULTICAST_RATE) && (value_convert <= PARM_MAX_MULTICAST_RATE))
- lp->MulticastRate[0] = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_MULTICAST_RATE);
- } else if (strcmp(key, PARM_NAME_OWN_CHANNEL) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_OWN_CHANNEL, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if (wl_is_a_valid_chan(value_convert)) {
- if (value_convert > 14)
- value_convert = value_convert | 0x100;
- lp->Channel = value_convert;
- } else {
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_OWN_CHANNEL);
- }
- } else if (strcmp(key, PARM_NAME_OWN_NAME) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_OWN_NAME, value);
-
- memset(lp->StationName, 0, (PARM_MAX_NAME_LEN + 1));
-
- /* Make sure the value isn't too long */
- string_length = strlen(value);
- if (string_length > PARM_MAX_NAME_LEN) {
- DBG_WARNING(DbgInfo, "%s too long; will be truncated\n", PARM_NAME_OWN_NAME);
- string_length = PARM_MAX_NAME_LEN;
- }
-
- memcpy(lp->StationName, value, string_length);
- } else if (strcmp(key, PARM_NAME_RTS_THRESHOLD) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_RTS_THRESHOLD, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_RTS_THRESHOLD) && (value_convert <= PARM_MAX_RTS_THRESHOLD))
- lp->RTSThreshold = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_RTS_THRESHOLD);
- } else if (strcmp(key, PARM_NAME_SRSC_2GHZ) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_SRSC_2GHZ, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_SRSC) || (value_convert <= PARM_MAX_SRSC))
- lp->srsc[0] = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_SRSC_2GHZ);
- } else if (strcmp(key, PARM_NAME_SRSC_5GHZ) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_SRSC_5GHZ, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_SRSC) || (value_convert <= PARM_MAX_SRSC))
- lp->srsc[1] = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_SRSC_5GHZ);
- } else if (strcmp(key, PARM_NAME_SYSTEM_SCALE) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_SYSTEM_SCALE, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_SYSTEM_SCALE) && (value_convert <= PARM_MAX_SYSTEM_SCALE))
- lp->DistanceBetweenAPs = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_SYSTEM_SCALE);
- } else if (strcmp(key, PARM_NAME_TX_KEY) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_KEY, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_KEY) && (value_convert <= PARM_MAX_TX_KEY))
- lp->TransmitKeyID = simple_strtoul(value, NULL, 0);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_KEY);
- } else if (strcmp(key, PARM_NAME_TX_RATE) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_RATE, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_RATE) && (value_convert <= PARM_MAX_TX_RATE))
- lp->TxRateControl[0] = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_RATE);
- } else if (strcmp(key, PARM_NAME_TX_POW_LEVEL) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_POW_LEVEL, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_POW_LEVEL) || (value_convert <= PARM_MAX_TX_POW_LEVEL))
- lp->txPowLevel = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_POW_LEVEL);
- }
-
- /* Need to add? : Country code, Short/Long retry */
-
- /* Configuration parameters specific to STA mode */
-#if 1 /* ;? (HCF_TYPE) & HCF_TYPE_STA */
-/* ;?seems reasonable that even an AP-only driver could afford this small additional footprint */
- if (CNV_INT_TO_LITTLE(lp->hcfCtx.IFB_FWIdentity.comp_id) == COMP_ID_FW_STA) {
- /* ;?should we return an error status in AP mode */
- if (strcmp(key, PARM_NAME_PORT_TYPE) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_PORT_TYPE, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert == PARM_MIN_PORT_TYPE) || (value_convert == PARM_MAX_PORT_TYPE))
- lp->PortType = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_PORT_TYPE);
- } else if (strcmp(key, PARM_NAME_PM_ENABLED) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_PM_ENABLED, value);
- value_convert = simple_strtoul(value, NULL, 0);
- /* ;? how about wl_main.c containing
- * VALID_PARAM(PARM_PM_ENABLED <= WVLAN_PM_STATE_STANDARD ||
- * (PARM_PM_ENABLED & 0x7FFF) <= WVLAN_PM_STATE_STANDARD);
- */
- if ((value_convert & 0x7FFF) <= PARM_MAX_PM_ENABLED) {
- lp->PMEnabled = value_convert;
- } else {
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_PM_ENABLED);
- /* ;?this is a data entry error, hence not a DBG_WARNING */
- }
- } else if (strcmp(key, PARM_NAME_CREATE_IBSS) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_CREATE_IBSS, value);
- lp->CreateIBSS = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_MULTICAST_RX) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_MULTICAST_RX, value);
- lp->MulticastReceive = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_MAX_SLEEP) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_MAX_SLEEP, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= 0) && (value_convert <= 65535))
- lp->MaxSleepDuration = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_MAX_SLEEP);
- } else if (strcmp(key, PARM_NAME_NETWORK_ADDR) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_NETWORK_ADDR, value);
-
- if (parse_mac_address(value, mac_value) == ETH_ALEN)
- memcpy(lp->MACAddress, mac_value, ETH_ALEN);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_NETWORK_ADDR);
- } else if (strcmp(key, PARM_NAME_AUTHENTICATION) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_AUTHENTICATION, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_AUTHENTICATION) && (value_convert <= PARM_MAX_AUTHENTICATION))
- lp->authentication = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_AUTHENTICATION);
- } else if (strcmp(key, PARM_NAME_OWN_ATIM_WINDOW) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_OWN_ATIM_WINDOW, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_OWN_ATIM_WINDOW) && (value_convert <= PARM_MAX_OWN_ATIM_WINDOW))
- lp->atimWindow = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_OWN_ATIM_WINDOW);
- } else if (strcmp(key, PARM_NAME_PM_HOLDOVER_DURATION) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_PM_HOLDOVER_DURATION, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_PM_HOLDOVER_DURATION) && (value_convert <= PARM_MAX_PM_HOLDOVER_DURATION))
- lp->holdoverDuration = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_PM_HOLDOVER_DURATION);
- } else if (strcmp(key, PARM_NAME_PROMISCUOUS_MODE) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_PROMISCUOUS_MODE, value);
- lp->promiscuousMode = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_CONNECTION_CONTROL) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_CONNECTION_CONTROL, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_CONNECTION_CONTROL) && (value_convert <= PARM_MAX_CONNECTION_CONTROL))
- lp->connectionControl = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_CONNECTION_CONTROL);
- }
-
- /* Need to add? : Probe Data Rate */
- }
-#endif /* (HCF_TYPE) & HCF_TYPE_STA */
-
- /* Configuration parameters specific to AP mode */
-#if 1 /* ;? (HCF_TYPE) & HCF_TYPE_AP */
- /* ;?should we restore this to allow smaller memory footprint */
- if (CNV_INT_TO_LITTLE(lp->hcfCtx.IFB_FWIdentity.comp_id) == COMP_ID_FW_AP) {
- if (strcmp(key, PARM_NAME_OWN_DTIM_PERIOD) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_OWN_DTIM_PERIOD, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if (value_convert >= PARM_MIN_OWN_DTIM_PERIOD)
- lp->DTIMPeriod = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_OWN_DTIM_PERIOD);
- } else if (strcmp(key, PARM_NAME_REJECT_ANY) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_REJECT_ANY, value);
- lp->RejectAny = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_EXCLUDE_UNENCRYPTED) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_EXCLUDE_UNENCRYPTED, value);
- lp->ExcludeUnencrypted = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_MULTICAST_PM_BUFFERING) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_MULTICAST_PM_BUFFERING, value);
- lp->ExcludeUnencrypted = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_INTRA_BSS_RELAY) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_INTRA_BSS_RELAY, value);
- lp->ExcludeUnencrypted = parse_yes_no(value);
- } else if (strcmp(key, PARM_NAME_OWN_BEACON_INTERVAL) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_OWN_BEACON_INTERVAL, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if (value_convert >= PARM_MIN_OWN_BEACON_INTERVAL)
- lp->ownBeaconInterval = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_OWN_BEACON_INTERVAL);
- } else if (strcmp(key, PARM_NAME_COEXISTENCE) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_COEXISTENCE, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if (value_convert >= PARM_MIN_COEXISTENCE)
- lp->coexistence = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_COEXISTENCE);
- }
-
-#ifdef USE_WDS
- else if (strcmp(key, PARM_NAME_RTS_THRESHOLD1) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_RTS_THRESHOLD1, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_RTS_THRESHOLD) && (value_convert <= PARM_MAX_RTS_THRESHOLD))
- lp->wds_port[0].rtsThreshold = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_RTS_THRESHOLD1);
- } else if (strcmp(key, PARM_NAME_RTS_THRESHOLD2) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_RTS_THRESHOLD2, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_RTS_THRESHOLD) && (value_convert <= PARM_MAX_RTS_THRESHOLD))
- lp->wds_port[1].rtsThreshold = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_RTS_THRESHOLD2);
- } else if (strcmp(key, PARM_NAME_RTS_THRESHOLD3) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_RTS_THRESHOLD3, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_RTS_THRESHOLD) && (value_convert <= PARM_MAX_RTS_THRESHOLD))
- lp->wds_port[2].rtsThreshold = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_RTS_THRESHOLD3);
- } else if (strcmp(key, PARM_NAME_RTS_THRESHOLD4) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_RTS_THRESHOLD4, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_RTS_THRESHOLD) && (value_convert <= PARM_MAX_RTS_THRESHOLD))
- lp->wds_port[3].rtsThreshold = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_RTS_THRESHOLD4);
- } else if (strcmp(key, PARM_NAME_RTS_THRESHOLD5) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_RTS_THRESHOLD5, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_RTS_THRESHOLD) && (value_convert <= PARM_MAX_RTS_THRESHOLD))
- lp->wds_port[4].rtsThreshold = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_RTS_THRESHOLD5);
- } else if (strcmp(key, PARM_NAME_RTS_THRESHOLD6) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_RTS_THRESHOLD6, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_RTS_THRESHOLD) && (value_convert <= PARM_MAX_RTS_THRESHOLD))
- lp->wds_port[5].rtsThreshold = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_RTS_THRESHOLD6);
- } else if (strcmp(key, PARM_NAME_TX_RATE1) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_RATE1, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_RATE) && (value_convert <= PARM_MAX_TX_RATE))
- lp->wds_port[0].txRateCntl = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_RATE1);
- } else if (strcmp(key, PARM_NAME_TX_RATE2) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_RATE2, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_RATE) && (value_convert <= PARM_MAX_TX_RATE))
- lp->wds_port[1].txRateCntl = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_RATE2);
- } else if (strcmp(key, PARM_NAME_TX_RATE3) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_RATE3, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_RATE) && (value_convert <= PARM_MAX_TX_RATE))
- lp->wds_port[2].txRateCntl = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_RATE3);
- } else if (strcmp(key, PARM_NAME_TX_RATE4) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_RATE4, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_RATE) && (value_convert <= PARM_MAX_TX_RATE))
- lp->wds_port[3].txRateCntl = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_RATE4);
- } else if (strcmp(key, PARM_NAME_TX_RATE5) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_RATE5, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_RATE) && (value_convert <= PARM_MAX_TX_RATE))
- lp->wds_port[4].txRateCntl = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_RATE5);
- } else if (strcmp(key, PARM_NAME_TX_RATE6) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_TX_RATE6, value);
-
- value_convert = simple_strtoul(value, NULL, 0);
- if ((value_convert >= PARM_MIN_TX_RATE) && (value_convert <= PARM_MAX_TX_RATE))
- lp->wds_port[5].txRateCntl = value_convert;
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_TX_RATE6);
- } else if (strcmp(key, PARM_NAME_WDS_ADDRESS1) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_WDS_ADDRESS1, value);
-
- if (parse_mac_address(value, mac_value) == ETH_ALEN)
- memcpy(lp->wds_port[0].wdsAddress, mac_value, ETH_ALEN);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_WDS_ADDRESS1);
- } else if (strcmp(key, PARM_NAME_WDS_ADDRESS2) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_WDS_ADDRESS2, value);
-
- if (parse_mac_address(value, mac_value) == ETH_ALEN)
- memcpy(lp->wds_port[1].wdsAddress, mac_value, ETH_ALEN);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_WDS_ADDRESS2);
- } else if (strcmp(key, PARM_NAME_WDS_ADDRESS3) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_WDS_ADDRESS3, value);
-
- if (parse_mac_address(value, mac_value) == ETH_ALEN)
- memcpy(lp->wds_port[2].wdsAddress, mac_value, ETH_ALEN);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_WDS_ADDRESS3);
- } else if (strcmp(key, PARM_NAME_WDS_ADDRESS4) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_WDS_ADDRESS4, value);
-
- if (parse_mac_address(value, mac_value) == ETH_ALEN)
- memcpy(lp->wds_port[3].wdsAddress, mac_value, ETH_ALEN);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_WDS_ADDRESS4);
- } else if (strcmp(key, PARM_NAME_WDS_ADDRESS5) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_WDS_ADDRESS5, value);
-
- if (parse_mac_address(value, mac_value) == ETH_ALEN)
- memcpy(lp->wds_port[4].wdsAddress, mac_value, ETH_ALEN);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_WDS_ADDRESS5);
- } else if (strcmp(key, PARM_NAME_WDS_ADDRESS6) == 0) {
- DBG_TRACE(DbgInfo, "%s, value: %s\n", PARM_NAME_WDS_ADDRESS6, value);
-
- if (parse_mac_address(value, mac_value) == ETH_ALEN)
- memcpy(lp->wds_port[5].wdsAddress, mac_value, ETH_ALEN);
- else
- DBG_WARNING(DbgInfo, "%s invalid; will be ignored\n", PARM_NAME_WDS_ADDRESS6);
- }
-#endif /* USE_WDS */
- }
-#endif /* (HCF_TYPE) & HCF_TYPE_AP */
-
- return;
-} /* translate_option */
-/*============================================================================*/
-
-/*******************************************************************************
- * parse_mac_address()
- *******************************************************************************
- *
- * DESCRIPTION:
- *
- * This function will parse a mac address string and convert it to a byte
- * array.
- *
- * PARAMETERS:
- *
- * value - the MAC address, represented as a string
- * byte_array - the MAC address, represented as a byte array of length
- * ETH_ALEN
- *
- * RETURNS:
- *
- * The number of bytes in the final MAC address, should equal to ETH_ALEN.
- *
- ******************************************************************************/
-int parse_mac_address(char *value, u_char *byte_array)
-{
- int value_offset = 0;
- int array_offset = 0;
- int field_offset = 0;
- char byte_field[3];
- /*------------------------------------------------------------------------*/
-
- memset(byte_field, '\0', 3);
-
- while (value[value_offset] != '\0') {
- /* Skip over the colon chars separating the bytes, if they exist */
- if (value[value_offset] == ':') {
- value_offset++;
- continue;
- }
-
- byte_field[field_offset] = value[value_offset];
- field_offset++;
- value_offset++;
-
- /* Once the byte_field is filled, convert it and store it */
- if (field_offset == 2) {
- byte_field[field_offset] = '\0';
- byte_array[array_offset] = simple_strtoul(byte_field, NULL, 16);
- field_offset = 0;
- array_offset++;
- }
- }
-
- /* Use the array_offset as a check; 6 bytes should be written to the
- byte_array */
- return array_offset;
-} /* parse_mac_address */
-/*============================================================================*/
-
-/*******************************************************************************
- * ParseConfigLine()
- *******************************************************************************
- *
- * DESCRIPTION:
- *
- * Parses a line from the configuration file into an L-val and an R-val,
- * representing a key/value pair.
- *
- * PARAMETERS:
- *
- * pszLine - the line from the config file to parse
- * ppszLVal - the resulting L-val (Key)
- * ppszRVal - the resulting R-val (Value)
- *
- * RETURNS:
- *
- * N/A
- *
- ******************************************************************************/
-void ParseConfigLine(char *pszLine, char **ppszLVal, char **ppszRVal)
-{
- int i;
- int size;
-
- /* get a snapshot of our string size */
- size = strlen(pszLine);
- *ppszLVal = NULL;
- *ppszRVal = NULL;
-
- if (pszLine[0] != '#' && /* skip the line if it is a comment */
- pszLine[0] != '\n' && /* if it's an empty UNIX line, do nothing */
- !(pszLine[0] == '\r' && pszLine[1] == '\n') /* if it's an empty MS-DOS line, do nothing */
- ) {
- /* advance past any whitespace, and assign the L-value */
- for (i = 0; i < size; i++) {
- if (pszLine[i] != ' ') {
- *ppszLVal = &pszLine[i];
- break;
- }
- }
- /* advance to the end of the l-value*/
- for (i++; i < size; i++) {
- if (pszLine[i] == ' ' || pszLine[i] == '=') {
- pszLine[i] = '\0';
- break;
- }
- }
- /* make any whitespace and the equal sign a NULL character, and
- advance to the R-Value */
- for (i++; i < size; i++) {
- if (pszLine[i] == ' ' || pszLine[i] == '=') {
- pszLine[i] = '\0';
- continue;
- }
- *ppszRVal = &pszLine[i];
- break;
- }
- /* make the line ending character(s) a NULL */
- for (i++; i < size; i++) {
- if (pszLine[i] == '\n')
- pszLine[i] = '\0';
- if ((pszLine[i] == '\r') && (pszLine[i+1] == '\n'))
- pszLine[i] = '\0';
- }
- }
-} /* ParseConfigLine */
-/*============================================================================*/
-
-#endif /* USE_PROFILE */