On 02/06/2012 01:47 PM, hiren panchasara wrote:
Hi Folks,

I am trying to make netcf work with FreeBSD.

Nice! Please keep us informed and be sure to ask when you need help (like now) :-)


I am looking for more documentation on xml part of it. (I think augeas is used for xml/xslt?)

Yes, that's true for the current ports (Fedora/RHEL, debian/ubuntu, and SuSe), but doesn't need to be true for any new port (although you may find it easier to deal with all the corner cases of config files by letting augeas deal with the details). You *could* just read the native freebsd config files and do a series of asprintfs. (going in the other direction it might be nice to at least use libxml2 to parse the XML into a form that would be easy to extra the info from).

The best documentation of the XML is contained in the examples in tests/interface. Basically, the idea is that if one interface is attached to another (e.g. a physical ethernet attached to a bridge), then that slave interface is represented as a sub-element of the master interface (e.g. tests/interface/bridge.xml, similar to the example at https://start.fedorahosted.org/netcf/). Four main types of interfaces are supported - ethernet, bridge, vlan, and bond. Here's the combinations that are supported:

   a bridge can enslave a bond, vlan, or ethernet.
   a bond can enslave ethernets
   a vlan can *reference* an ethernet, bond, or bridge.

Here's a diagram that shows the relationships:

https://start.fedorahosted.org/netcf/wiki/InterfaceNesting

The black lines show a proper master-slave relationship, and can be represented in a single xml config (== one "toplevel" interface == a single entry in the output of "ncftool list"; the green lines just show a reference, and in these cases each interface will be configured separately (== multiple toplevel interfaces == multiple entries in the output of "ncftool list".

For example, it's possible to bond two ethernets together, and attach that bond to a bridge device - see tests/interface/bridge-bond.xml for an example. (If you wonder why I'm avoiding putting XML examples in my response, partly it's for brevity, but mostly its because Thunderbird insists on eating the formatting whitespace in xml examples :-( )

Or, you can have a bridge with a vlan attached - tests/interface/bridge-vlan.xml. (Note that in that example, the interface eth0 would still need a separate definition, as the vlan in bridge-vlan.xml only *references* eth0, it doesn't enslave it (meaning it can still be used for other purposes, e.g. for other vlans, and/or as an interface in its own right.

In short, 1) when writing your xml parser and formatter, you need to account for the idea that there may be an interface within and interface within an interface, and when you're listing the interfaces, you should only list the toplevel of each of these hierarchies.

"list" the interfaces but "dumpxml" does not work as I need to prepare xml/xsl scaffolding.

Any pointers would be appreciated.

In general, to do a port of netcf, you need to create a new drv_${platform}.c file that defines all of the functions declared at the end of src/internal.h, then modify configure.ac to figure out your platform (just search for "suse" within that file) and src/Makefile.am to add the correct drv_*.c file (and whatever other dutil*.[ch] files are appropriate - maybe you want to write one yourself for bsd-specific things, or add functions to dutil.c) when that platform is selected (again, search for "suse"). If you don't use augeas, you won't want to defint get_aug() and put_aug(), and thus won't be able to build ncftransform.c, but that isn't essential to operation, it's only for testing that augeas transforms are working properly (the mswindows port is an example of leaving those functions out, and not compiling ncftransform)


You may find that not all the functions in dutil.[ch] are useful for you (if you don't use libxml2, although I would strongly recommend you do), and in that case feel free to either move them to another file (dutil_libxml.[ch]) or just conditionally compile them.

_______________________________________________
netcf-devel mailing list
netcf-devel@lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/netcf-devel

Reply via email to