libosmo-netif interface

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Harald Welte laforge at gnumonks.org
Sun Oct 15 16:30:09 UTC 2017


Hi Max,

On Fri, Oct 13, 2017 at 11:57:51AM +0200, Max wrote:

> While looking at osmocom/netif/datagram.h I've noticed that it's organized
> differently compared to other libosmo*. Most notably, it does not have structure
> definitions, only brief declarations in datagram.h while the actual definition is in
> datagram.c

This is correct.  It's probably following the kind of learning curve that Pablo
was making with netfilter related libraries over time.

> This effectively means that client code using the library do not have access to
> struct internals and have to use various "osmo_dgram_.x_set_*()" functions to
> manipulate them.

correct.

> This got me curious - what are the pros and cons of this approach?
> 
> I can see the benefit of being able to change struct internals without changing the
> API. I can also see the downside in having to define lot's of boilerplate
> setter/getter functions.

I think that's about it.  If you want to keep a long-term stable ABI +
API, then hiding the structure is the only sane approach.  But yes, it
comes at a cost.

> Is there a way to avoid or at least simplify setter/getter
> boilerplate?

I think it's called C++ with its ability to have private/friend/public members ;)

In C, I'm not aware of any simplification.

-- 
- Harald Welte <laforge at gnumonks.org>           http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
                                                  (ETSI EN 300 175-7 Ch. A6)



More information about the OpenBSC mailing list