16728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky/*
26728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *
3b66d3f9b2cb8934a0eb7ac07f347001984488ac6Marcel Holtmann *  BlueZ - Bluetooth protocol stack for Linux
46728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *
59184e2eeb7b97371c6b83b747c8984e2340d2b47Marcel Holtmann *  Copyright (C) 2002-2010  Marcel Holtmann <marcel@holtmann.org>
66728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *
76728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *
86728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *  This program is free software; you can redistribute it and/or modify
9632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  it under the terms of the GNU General Public License as published by
10632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  the Free Software Foundation; either version 2 of the License, or
11632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  (at your option) any later version.
126728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *
13632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  This program is distributed in the hope that it will be useful,
14632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  GNU General Public License for more details.
176728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *
18632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  You should have received a copy of the GNU General Public License
19632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  along with this program; if not, write to the Free Software
20632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
216728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky *
226728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky */
236728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
24b66d3f9b2cb8934a0eb7ac07f347001984488ac6Marcel Holtmann#ifdef HAVE_CONFIG_H
25b66d3f9b2cb8934a0eb7ac07f347001984488ac6Marcel Holtmann#include <config.h>
26b66d3f9b2cb8934a0eb7ac07f347001984488ac6Marcel Holtmann#endif
27b66d3f9b2cb8934a0eb7ac07f347001984488ac6Marcel Holtmann
286728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky#include <stdio.h>
29632a9432774ff3a0c6e556e8f32a565b38890767Marcel Holtmann#include <errno.h>
306728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky#include <sys/socket.h>
316728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
326728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky#include <bluetooth/bluetooth.h>
336728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky#include <bluetooth/rfcomm.h>
346728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
356728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky#include "kword.h"
366728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky#include "parser.h"
376728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
386728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyanskyint lineno;
396728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
406728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyanskystruct keyword_t rfcomm_keyword[] = {
416728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "bind",	K_BIND		},
426728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "device",	K_DEVICE	},
436728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "channel",	K_CHANNEL	},
446728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "comment",	K_COMMENT	},
456728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
466728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "yes",	K_YES		},
476728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "no",		K_NO		},
486728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "enable",	K_YES		},
496728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ "disable",	K_NO		},
506728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
516728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	{ NULL , 0 }
526728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky};
536728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
546728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyanskyint rfcomm_find_keyword(struct keyword_t *keyword, char *string)
556728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky{
566728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	while (keyword->string) {
576728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky		if (!strcmp(string, keyword->string))
586728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky			return keyword->type;
596728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky		keyword++;
606728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	}
616728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
626728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky	return -1;
636728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky}
646728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyansky
656728b0dbbfba17d6d41c46aa4cadb52945070771Max Krasnyanskystruct rfcomm_opts rfcomm_opts[RFCOMM_MAX_DEV];
66