[Asterisk-code-review] netsock2: Implementation for ast_sockaddr_from_sockaddr. (asterisk[13])

Jaco Kroon asteriskteam at digium.com
Thu Dec 19 03:53:56 CST 2019


Jaco Kroon has posted comments on this change. ( https://gerrit.asterisk.org/c/asterisk/+/13361 )

Change subject: netsock2: Implementation for ast_sockaddr_from_sockaddr.
......................................................................


Patch Set 4:

> Patch Set 4:
> 
> > Patch Set 4: Code-Review-1
> > 
> > (1 comment)
> > 
> > Since there's already an "ast_sockaddr_copy_sockaddr" can ast_sockaddr_from_sockaddr just be a #DEFINE that wraps the existing function?
> 
> Since that function doesn't exist in 13:
> 
> jkroon at plastiekpoot ~/projects/asterisk ((HEAD detached at origin/13)) $ grep -r ast_sockaddr_copy_sockaddr .
> [1] jkroon at plastiekpoot ~/projects/asterisk ((HEAD detached at origin/13)) $          
> 
> jkroon at plastiekpoot ~/projects/asterisk (master) $ grep -r ast_sockaddr_copy_sockaddr .
> ./include/asterisk/netsock2.h:static inline void ast_sockaddr_copy_sockaddr(struct ast_sockaddr *dst,
> ./main/io.c:    ast_sockaddr_copy_sockaddr(&fd_addr, &ss, ss_len);
> jkroon at plastiekpoot ~/projects/asterisk (master) $ 
> 
> Perhaps I should rather just back-port that existing function?
> 
> I mean really, s/copy/from/ ... for all practical purposes.

To answer myself after some more reading.  The sizeof is required to the copy command, and to calculate (look up more like it) this size one needs to know the family type.  Maybe a dual function call structure, one of which is a #define perhaps something like:

inline int ast_addressfamily_to_sockaddrsize(int af) {
  switch (af) {
  case AF_INET:
    return sizeof(struct sockaddr_in);
  case AF_INET6:
    return sizeof(struct sockaddr_in6);
  default:
    return 0;
}

And then one can action your #define as:

#define ast_sockaddr_from_sockaddr(t, s) ast_sockaddr_copy_sockaddr(t, s, ast_addressfamily_to_sockaddrsize(s))

Seeing that any unsupported protocol returns 0, the net effect is that the resulting ast_sockaddr above would end up being a "null" socket, so one could still use ast_sockaddr_isnull() to test for failure.

Kind Regards,
Jaco


-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/13361
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-Change-Id: Iee604e96e9096c79b477d6e5ff310cf0b06dae86
Gerrit-Change-Number: 13361
Gerrit-PatchSet: 4
Gerrit-Owner: Jaco Kroon <jaco at uls.co.za>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua C. Colp <jcolp at sangoma.com>
Gerrit-Comment-Date: Thu, 19 Dec 2019 09:53:56 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20191219/36f295a7/attachment-0001.html>


More information about the asterisk-code-review mailing list