+ struct interface_port *ifport, **ifportp;
+ struct interface *searchif;
+
+ /* check for port already assigned */
+ searchif = interface_newlist;
+ while(searchif)
+ {
+ ifport = searchif->ifport;
+ while(ifport)
+ {
+ if (!strcasecmp(ifport->portname, value))
+ {
+ SPRINT(interface_error, "Error in %s (line %d): port '%s' already used above.\n", filename, line, value);
+ return(-1);
+ }
+ ifport = ifport->next;
+ }
+ searchif = searchif->next;
+ }
+ /* alloc port substructure */
+ ifport = (struct interface_port *)MALLOC(sizeof(struct interface_port));
+ memuse++;
+ ifport->interface = interface;
+ /* set value */
+ ifport->portnum = -1; // disable until resolved
+ SCPY(ifport->portname, value);
+ /* tail port */
+ ifportp = &interface->ifport;
+ while(*ifportp)
+ ifportp = &((*ifportp)->next);
+ *ifportp = ifport;
+ return(0);
+}
+static int inter_l1hold(struct interface *interface, char *filename, int line, char *parameter, char *value)
+{
+ struct interface_port *ifport;
+
+ /* port in chain ? */
+ if (!interface->ifport)
+ {
+ SPRINT(interface_error, "Error in %s (line %d): parameter '%s' expects previous 'port' definition.\n", filename, line, parameter);
+ return(-1);
+ }
+ /* goto end of chain */
+ ifport = interface->ifport;
+ while(ifport->next)
+ ifport = ifport->next;
+ if (!strcmp(value, "yes"))
+ {
+ ifport->l1hold = 1;
+ } else
+ if (!strcmp(value, "no"))
+ {
+ ifport->l1hold = 0;
+ } else
+ {
+ SPRINT(interface_error, "Error in %s (line %d): parameter '%s' expecting parameter 'yes' or 'no'.\n", filename, line, parameter);
+ return(-1);
+ }
+ return(0);