[ovs-dev,4/4] ovs: optimize 'ip_parse_port' function.
diff mbox

Message ID CAM_3v9JAZyH6C4eHnEkJM77_CGBREsThP7QUodZorceN7L683A@mail.gmail.com
State Not Applicable
Headers show

Commit Message

Guru Shetty Nov. 21, 2016, 5:22 p.m. UTC
On 21 November 2016 at 08:03, nickcooper-zhangtonghao <nic@opencloud.tech>
wrote:

> Hi Guru Shetty
>
> I folded in the following minor incremental just because ovs_scan_len()
> is only really meant for
> situations where the 'n' offset is being incremented over several calls.
>

Thanks. I intend to add the following incremental before applying.

 {



>
> Thanks.
> Nick
>
> On Nov 19, 2016, at 2:35 AM, Guru Shetty <guru@ovn.org> wrote:
>
> Can you tell why one is better than the other?
>
>
>> ---
>>  lib/packets.c | 11 ++++-------
>>  1 file changed, 4 insertions(+), 7 deletions(-)
>>
>> diff --git a/lib/packets.c b/lib/packets.c
>> index 990c407..1d2d452 100644
>> --- a/lib/packets.c
>> +++ b/lib/packets.c
>> @@ -436,15 +436,12 @@ char * OVS_WARN_UNUSED_RESULT
>>  ip_parse_port(const char *s, ovs_be32 *ip, ovs_be16 *port)
>>  {
>>      int n = 0;
>> -    if (!ovs_scan_len(s, &n, IP_PORT_SCAN_FMT,
>> -                IP_PORT_SCAN_ARGS(ip, port))) {
>> -        return xasprintf("%s: invalid IP address or port number", s);
>> +    if (ovs_scan(s, IP_PORT_SCAN_FMT"%n", IP_PORT_SCAN_ARGS(ip, port),
>> &n)
>> +        && !s[n]) {
>> +        return NULL;
>>      }
>>
>> -    if (s[n]) {
>> -        return xasprintf("%s: invalid IP address or port number", s);
>> -    }
>> -    return NULL;
>> +    return xasprintf("%s: invalid IP address or port number", s);
>>  }
>
>
>

Patch
diff mbox

diff --git a/lib/packets.c b/lib/packets.c
index 1d2d452..ae81f46 100644
--- a/lib/packets.c
+++ b/lib/packets.c
@@ -431,7 +431,10 @@  ip_parse(const char *s, ovs_be32 *ip)

 /* Parses string 's', which must be an IP address with a port number
  * with ":" as a separator (e.g.: 192.168.1.2:80).
- * Stores the IP address into '*ip' and port number to '*port'. */
+ * Stores the IP address into '*ip' and port number to '*port'.
+ *
+ * Returns NULL if successful, otherwise an error message that the caller
must
+ * free(). */
 char * OVS_WARN_UNUSED_RESULT
 ip_parse_port(const char *s, ovs_be32 *ip, ovs_be16 *port)