+
+ if (configstr[0] == '=') {
+ localonly= 1;
+ configstr++;
+ } else {
+ localonly= 0;
+ }
+
+ permit_begin();
+
+ rangeix= 0;
+ plus= 1;
+ switch (configstr[0]) {
+ case '-': plus= 0; /* fall through */
+ case '+': configstr++;
+ default:;
+ }
+
+ for (;;) {
+ sprintf(whattxt, "%s-prefix#%d",
+ plus ? "permitted" : "notpermitted",
+ rangeix);
+ eat_prefixmask(&configstr,whattxt, ",+-",&delim,
+ &pprefix,&pmask,&plen);
+ if (!configstr && truncated)
+ badusage("gid,prefix/len,... spec too long");
+
+ if (!proto)
+ printf(" %c%s/%d:", plus?'+':'-',ip2txt(pprefix,ptxt), plen);
+
+ permit_range(pprefix,pmask,plus,localonly);
+ if (delim==',') break;
+
+ plus= delim=='-' ? 0 : 1;
+ rangeix++;
+ }
+
+ putchar('\n');