Revision 85bb6d36

b/net.c
94 94
    return 0;
95 95
}
96 96

  
97
int parse_host_src_port(struct sockaddr_in *haddr,
98
                        struct sockaddr_in *saddr,
99
                        const char *input_str)
100
{
101
    char *str = qemu_strdup(input_str);
102
    char *host_str = str;
103
    char *src_str;
104
    const char *src_str2;
105
    char *ptr;
106

  
107
    /*
108
     * Chop off any extra arguments at the end of the string which
109
     * would start with a comma, then fill in the src port information
110
     * if it was provided else use the "any address" and "any port".
111
     */
112
    if ((ptr = strchr(str,',')))
113
        *ptr = '\0';
114

  
115
    if ((src_str = strchr(input_str,'@'))) {
116
        *src_str = '\0';
117
        src_str++;
118
    }
119

  
120
    if (parse_host_port(haddr, host_str) < 0)
121
        goto fail;
122

  
123
    src_str2 = src_str;
124
    if (!src_str || *src_str == '\0')
125
        src_str2 = ":0";
126

  
127
    if (parse_host_port(saddr, src_str2) < 0)
128
        goto fail;
129

  
130
    free(str);
131
    return(0);
132

  
133
fail:
134
    free(str);
135
    return -1;
136
}
137

  
138 97
int parse_host_port(struct sockaddr_in *saddr, const char *str)
139 98
{
140 99
    char buf[512];
b/qemu_socket.h
54 54

  
55 55
/* Old, ipv4 only bits.  Don't use for new code. */
56 56
int parse_host_port(struct sockaddr_in *saddr, const char *str);
57
int parse_host_src_port(struct sockaddr_in *haddr,
58
                        struct sockaddr_in *saddr,
59
                        const char *str);
60 57
int socket_init(void);
61 58

  
62 59
#endif /* QEMU_SOCKET_H */

Also available in: Unified diff