'default' keyword in the RH 'route6' file
- From: Francesco Prelz <Francesco Prelz mi infn it>
- To: networkmanager-list gnome org
- Cc: Michele Bensi mi infn it, Francesco Prelz mi infn it
- Subject: 'default' keyword in the RH 'route6' file
- Date: Mon, 21 Jan 2013 17:29:32 +0100 (CET)
The regexps that are currently used for matching the 'default' keyword
when reading the network-scripts/route6-XXX RedHat configuration file
in settings/plugins/ifcfg-rh/reader.c
will just match the string 'defa', that matches the hex in
IPV6_ADDR_REGEX:
1005 #define IPV6_ADDR_REGEX "[0-9A-Fa-f:.]+"
(...)
1022 const char *pattern_to1 = "^\\s*(" IPV6_ADDR_REGEX "|default)" /* IPv6 or 'default' keyword */
1023 "(?:/(\\d{1,2}))?";/* optional prefix */
1024 const char *pattern_to2 = "to\\s+(" IPV6_ADDR_REGEX "|default)" /* IPv6 or 'default' keyword */
1025 "(?:/(\\d{1,2}))?";
Which leads to this error:
NetworkManager[2236]: ifcfg-rh: error: Invalid IP6 route destination address 'defa'
One quick way out is to swap 'default' and IPV6_ADDR_REGEX in the
regexps (as in the attached patch) so that 'default' matches first (at
least in the current g_regexp implementation: as for this being correct
and portable, I can only go as far as Friedl's "Mastering Regular
Expressions", page 112: "you can pretty much count on
each alternative being checked in the order given in the expression").
Thanks.
Francesco Prelz
INFN - Milan
--- ./src/settings/plugins/ifcfg-rh/reader.c.ORIG 2013-01-21 16:59:46.000000000 +0100
+++ ./src/settings/plugins/ifcfg-rh/reader.c 2013-01-21 17:04:23.000000000 +0100
@@ -1041,9 +1041,9 @@
gboolean success = FALSE;
const char *pattern_empty = "^\\s*(\\#.*)?$";
- const char *pattern_to1 = "^\\s*(" IPV6_ADDR_REGEX "|default)" /* IPv6 or 'default' keyword */
+ const char *pattern_to1 = "^\\s*(default|" IPV6_ADDR_REGEX ")" /* IPv6 or 'default' keyword */
"(?:/(\\d{1,3}))?"; /* optional prefix */
- const char *pattern_to2 = "to\\s+(" IPV6_ADDR_REGEX "|default)" /* IPv6 or 'default' keyword */
+ const char *pattern_to2 = "to\\s+(default|" IPV6_ADDR_REGEX ")" /* IPv6 or 'default' keyword */
"(?:/(\\d{1,3}))?"; /* optional prefix */
const char *pattern_via = "via\\s+(" IPV6_ADDR_REGEX ")"; /* IPv6 of gateway */
const char *pattern_metric = "metric\\s+(\\d+)"; /* metric */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]