int parse_host_src_port(struct sockaddr_in *haddr,

                        struct sockaddr_in *saddr,

                        const char *input_str)

{

    char *str = strdup(input_str);

    char *host_str = str;

    char *src_str;

    const char *src_str2;

    char *ptr;



    /*

     * Chop off any extra arguments at the end of the string which

     * would start with a comma, then fill in the src port information

     * if it was provided else use the "any address" and "any port".

     */

    if ((ptr = strchr(str,',')))

        *ptr = '\0';



    if ((src_str = strchr(input_str,'@'))) {

        *src_str = '\0';

        src_str++;

    }



    if (parse_host_port(haddr, host_str) < 0)

        goto fail;



    src_str2 = src_str;

    if (!src_str || *src_str == '\0')

        src_str2 = ":0";



    if (parse_host_port(saddr, src_str2) < 0)

        goto fail;



    free(str);

    return(0);



fail:

    free(str);

    return -1;

}

int parse_host_src_port(struct sockaddr_in *haddr,

                        struct sockaddr_in *saddr,

                        const char *input_str)

{

    char *str = strdup(input_str);

    char *host_str = str;

    char *src_str;

    const char *src_str2;

    char *ptr;



    









    if ((ptr = strchr(str,',')))

        *ptr = '\0';



    if ((src_str = strchr(input_str,'@'))) {

        *src_str = '\0';

        src_str++;

    }



    if (parse_host_port(haddr, host_str) < 0)

        goto fail;



    src_str2 = src_str;

    if (!src_str || *src_str == '\0')

        src_str2 = ":0";



    if (parse_host_port(saddr, src_str2) < 0)

        goto fail;



    free(str);

    return(0);



fail:

    free(str);

    return -1;

}

    char *str = strdup(input_str);
int FUNC_0(struct sockaddr_in *VAR_0,

                        struct sockaddr_in *VAR_1,

                        const char *VAR_2)

{

    char *VAR_3 = strdup(VAR_2);

    char *VAR_4 = VAR_3;

    char *VAR_5;

    const char *VAR_6;

    char *VAR_7;



    









    if ((VAR_7 = strchr(VAR_3,',')))

        *VAR_7 = '\0';



    if ((VAR_5 = strchr(VAR_2,'@'))) {

        *VAR_5 = '\0';

        VAR_5++;

    }



    if (parse_host_port(VAR_0, VAR_4) < 0)

        goto fail;



    VAR_6 = VAR_5;

    if (!VAR_5 || *VAR_5 == '\0')

        VAR_6 = ":0";



    if (parse_host_port(VAR_1, VAR_6) < 0)

        goto fail;



    free(VAR_3);

    return(0);



fail:

    free(VAR_3);

    return -1;

}

int FUNC_0(struct sockaddr_in *VAR_0,
struct sockaddr_in *VAR_1,
const char *VAR_2)
{ char *VAR_3 = strdup(VAR_2); char *VAR_4 = VAR_3; char *VAR_5; const char *VAR_6; char *VAR_7; if ((VAR_7 = strchr(VAR_3,',')))
*VAR_7 = '\0'; if ((VAR_5 = strchr(VAR_2,'@'))) { *VAR_5 = '\0'; VAR_5++; } if (parse_host_port(VAR_0, VAR_4) < 0)
goto fail; VAR_6 = VAR_5; if (!VAR_5 || *VAR_5 == '\0')
VAR_6 = ":0"; if (parse_host_port(VAR_1, VAR_6) < 0)
goto fail; free(VAR_3); return(0); fail:
free(VAR_3); return -1; }