+ /*-----------------------------------------------------------------*/\r
+ printf("Parsing upstream interfaces list %s ...\n", upstreamfile);\r
+ /*-----------------------------------------------------------------*/\r
+ parse(upstreamfile)\r
+ {\r
+ ptr = parse_datafile_line(_);\r
+ if(ptr)\r
+ {\r
+ create(interface, Interface);\r
+ interface->name = _;\r
+ interface->speed = (long long)atol(ptr);\r
+ /* is supplied value meaningful ?*/\r
+ if(interface->speed <= 0)\r
+ {\r
+ printf("Illegal value of %s interface bandwidth.\n", interface->name);\r
+ reject_config_and_exit(upstreamfile);\r
+ }\r
+ interface->is_upstream = TRUE;\r
+ interface->chain = "FORWARD";\r
+ interface->idxprefix = "forw";\r
+ push(interface, interfaces);\r
+ printf("Upstream interface %s: medium %s capacity %Ld kbps\n", interface->name, medium, interface->speed);\r
+ }\r
+ }\r
+ done; /* ugly macro end */\r
+\r
+ /*-----------------------------------------------------------------*/\r
+ printf("Parsing downstream interfaces list %s ...\n", downstreamfile);\r
+ /*-----------------------------------------------------------------*/\r
+ parse(downstreamfile)\r
+ {\r
+ ptr = parse_datafile_line(_);\r
+ if(ptr)\r
+ {\r
+ create(interface, Interface);\r
+ interface->name = _;\r
+ interface->speed = (long long)atol(ptr);\r
+ /* is supplied value meaningful ?*/\r
+ if(interface->speed <= 0)\r
+ {\r
+ printf("Illegal value of %s interface bandwidth.\n", interface->name);\r
+ reject_config_and_exit(downstreamfile);\r
+ }\r
+ interface->is_upstream = FALSE;\r
+ interface->chain = "POSTROUTING";\r
+ interface->idxprefix = "post";\r
+ push(interface, interfaces);\r
+ printf("Downstream interface %s: medium %s capacity %Ld kbps\n", interface->name, medium, interface->speed);\r
+ }\r
+ }\r
+ done; /* ugly macro end */\r