rem: }
context: parse_options(const char *optsstr, u_int16_t *opts){        char *buffer, *cp, *next, *range;        unsigned int i;		buffer = strdup(optsstr);        if (!buffer) exit_error(OTHER_PROBLEM, "strdup failed");			        for (cp=buffer, i=0; cp && i<IP6T_OPTS_OPTSNR; cp=next,i++)        {                next=strchr(cp, ',');                if (next) *next++='\0';                range = strchr(cp, ':');                if (range) {                        if (i == IP6T_OPTS_OPTSNR-1)                                exit_error(PARAMETER_PROBLEM,                                           "too many ports specified");                        *range++ = '\0';                }                opts[i] = (u_int16_t)((parse_opts_num(cp,"opt") & 0x000000FF)<<8);                 if (range) {			if (opts[i] == 0)        			exit_error(PARAMETER_PROBLEM, "PAD0 hasn't got length");                        opts[i] |= (u_int16_t)(parse_opts_num(range,"length") &					0x000000FF);                } else {                        opts[i] |= (0x00FF);		}#if DEBUG		printf("opts str: %s %s\n", cp, range);		printf("opts opt: %04X\n", opts[i]);#endif	}        if (cp) exit_error(PARAMETER_PROBLEM, "too many addresses specified");	free(buffer);#if DEBUG	printf("addr nr: %d\n", i);#endif	return i;}