From: Margaret Wasserman Date: Tue, 2 Jul 2013 14:02:26 +0000 (-0400) Subject: Added function to do prefix wildcard comparison for filtering. X-Git-Tag: 1.0~24 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=trust_router.git;a=commitdiff_plain;h=1d13e7050e25b390b66fbe6b7bded1b3bed97db4 Added function to do prefix wildcard comparison for filtering. --- diff --git a/Makefile.am b/Makefile.am index 8b94d8e..10b9b43 100644 --- a/Makefile.am +++ b/Makefile.am @@ -13,6 +13,7 @@ tr_trust_router_SOURCES = tr/tr_main.c \ common/tr_config.c \ common/tr_idp.c \ common/tr_comm.c \ +common/tr_filter.c \ tr/tr.c tr_trust_router_LDADD = gsscon/libgsscon.la libtr_tid.la @@ -43,7 +44,8 @@ noinst_HEADERS = include/gsscon.h include/tr_config.h \ include/tr_msg.h \ include/tr.h \ include/tr_idp.h include/tr_rp.h \ - include/tr_comm.h include/tr_apc.h + include/tr_comm.h include/tr_apc.h \ + include/tr_filter.h EXTRA_DIST = trust_router.spec diff --git a/common/tr_filter.c b/common/tr_filter.c new file mode 100644 index 0000000..857ac5b --- /dev/null +++ b/common/tr_filter.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2012, 2013, JANET(UK) + * 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. + * + * 3. Neither the name of JANET(UK) nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE + * COPYRIGHT HOLDER 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 +#include + +/* Returns TRUE (1) if the the string (str) matchs the wildcard string (wc_str), FALSE (0) if not. + */ +int tr_prefix_wildcard_match (char *str, char *wc_str) { + char *wc_post = wc_str; + size_t len = 0; + size_t wc_len = 0; + + if ((!str) || (!wc_str)) + return 0; + + /* TBD -- skip leading white space? */ + if ('*' == wc_str[0]) + wc_post = &(wc_str[1]); + + len = strlen(str); + /* Everything matches an empty string or "*" */ + if (0 == (wc_len = strlen(wc_post))) + return 1; + if (wc_len > len) + return 0; + + if (!strcmp(&(str[len-wc_len]), wc_post)) { + return 1; + } + else + return 0; + } diff --git a/common/tr_util.c b/common/tr_util.c index c5c248b..9562d9c 100644 --- a/common/tr_util.c +++ b/common/tr_util.c @@ -48,3 +48,4 @@ void tr_bin_to_hex(const unsigned char * bin, size_t bin_len, hex_len -= 2; } } + diff --git a/include/tr_filter.h b/include/tr_filter.h new file mode 100644 index 0000000..8694469 --- /dev/null +++ b/include/tr_filter.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2012, 2013, JANET(UK) + * 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. + * + * 3. Neither the name of JANET(UK) nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE + * COPYRIGHT HOLDER 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. + * + */ + +#ifndef TR_CONFIG_H +#define TR_CONFIG_H + +int tr_prefix_wildcard_match (char *str, char *wc_str); + +#endif