<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">I've checked the sources of ifconfig of
      NetBSD. Also I've made a source code for creation of a new
      interface and VLAN in NetBSD.<br>
      Indeed the naming in the NetBSD of the interfaces are limited to
      this list:<br>
      <br>
      agr bridge vlan stf gif gre tap tun strip sl pppoe ppp lo<br>
      <br>
      From my point of view is a drawback for this OS because it doesn't
      permit to set a custom name for the interface. Fortunately we can
      create a lot of vlans name which they shouldn't match the ID of
      the real VLAN :).<br>
      <br>
      Starting from this point I can tell that I can do the
      "encapsulation dot1q" command for both Linux and BSD OSes with the
      additional command "binding physical interface" command.<br>
      I will split the code in two logical parts:<br>
      <br>
      1. Linux part using interface naming: eth0.123 which the "binding
      physical interface" command will be optional and will overwrite
      the physical interface token from interface name.<br>
      2. Linux and BSD OSes using specific names and force to use
      "binding physical interface" command and obvious will skip the
      part that is taking the physical interface from interface name.<br>
      <br>
      For Solaris instead I don't know anything for the moment in source
      coding of VLANs. From what I saw is using dladm and ipadm to
      create vlans and here in this document<br>
      <a
        href="http://docs.oracle.com/cd/E23824_01/html/821-1458/fpjve.html">http://docs.oracle.com/cd/E23824_01/html/821-1458/fpjve.html</a><br>
      they tell that the:<br>
      <dt style="font-weight: bold; padding: 5px 0px 0px; color: rgb(0,
        0, 0); font-family: Arial, Helvetica, Luxi-sans, 'Nimbus Sans
        L', sans-serif; font-size: 12px; font-style: normal;
        font-variant: normal; letter-spacing: normal; line-height:
        normal; orphans: auto; text-align: left; text-indent: 0px;
        text-transform: none; white-space: normal; widows: auto;
        word-spacing: 0px; -webkit-text-size-adjust: auto;
        -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
        255);"><var style="font-family: Times; font-weight: normal;
          font-style: italic;">vlan-link</var></dt>
      <dd style="color: rgb(0, 0, 0); font-family: Arial, Helvetica,
        Luxi-sans, 'Nimbus Sans L', sans-serif; font-size: 12px;
        font-style: normal; font-variant: normal; font-weight: normal;
        letter-spacing: normal; line-height: normal; orphans: auto;
        text-align: left; text-indent: 0px; text-transform: none;
        white-space: normal; widows: auto; word-spacing: 0px;
        -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
        background-color: rgb(255, 255, 255);">
        <p style="margin-top: 3px; margin-bottom: 17px;">Specifies the
          name of the VLAN, which can also be an administratively-chosen
          name.</p>
      </dd>
      <dt></dt>
      But until I will install a Solaris OS on a VM and take a look into
      the dladm sources I can't say anything.<br>
      <br>
      Also I think that a Port-Channel should be welcome from a first
      look in the sources code.<br>
      <br>
      It's good in this way? Any suggestions? :)<br>
      <br>
      Best regards,<br>
      Adrian<br>
      <br>
      On 5/1/2013 4:06 PM, Adrian Ban wrote:<br>
    </div>
    <blockquote cite="mid:51811350.5070903@mantech.ro" type="cite">Thanks
      for the info.
      <br>
      <br>
      I saw that the ifconfig is the main target for BSD.
      <br>
      The naming of the subinterface can be reconfigured as well. Only
      the problem remains if we can't create a custom name interface in
      BSD I should add a new command like:
      <br>
      <br>
      binding physical interface tlp0
      <br>
      encapsulation dot1q 6
      <br>
      <br>
      This is a solution which can work on both OS Linux and BSD also.
      In Linux if the first command is given will not do the sanity
      check for interface name, just check if the interface name is free
      in system, check the if the VLAN id is not already on the physical
      interface and create the VLAN.
      <br>
      If is not given will do sanity check, extract the physical
      interface, check the VLAN on that physical interface and create
      the VLAN.
      <br>
      <br>
      In BSD is the first command is not given the "encapsulation dot1q
      6" will return an error something like this:
      <br>
      %% no physical interface binding. Please configure "binding
      physical interface" subcommand.
      <br>
      <br>
      Any suggestions are welcome :).
      <br>
      <br>
      Best regards,
      <br>
      Adrian
      <br>
      <br>
      After I'm finish the Linux part I will install a BSD based OS on a
      VM and change the VLAN configuration for it.
      <br>
      About Solaris .. hope I will find some "ifconfig" parts there too
      or the tool which is creating the VLANs.
      <br>
      <br>
      On 5/1/2013 3:50 PM, Greg Troxel wrote:
      <br>
      <blockquote type="cite">Adrian Ban
        <a class="moz-txt-link-rfc2396E" href="mailto:bluelightning@mantech.ro">&lt;bluelightning@mantech.ro&gt;</a> writes:
        <br>
        <br>
        <blockquote type="cite">I don't know if the BSD supports
          creating the VLAN via kernel netlink,
          <br>
          not 100% sure. Maybe somebody with more experience in BSD
          programming
          <br>
          can give me a hint.
          <br>
        </blockquote>
        netlink is a Linux-only interface.&nbsp; BSD systems use the routing
        socket
        <br>
        for learning about things and ioctl for configuring.
        <br>
        <br>
        <blockquote type="cite">For example in this document:
          <br>
          <a class="moz-txt-link-freetext" href="http://www.openbsd.org/cgi-bin/man.cgi?query=vlan&amp;sektion=4">http://www.openbsd.org/cgi-bin/man.cgi?query=vlan&amp;sektion=4</a>
          seems that
          <br>
          the creating of vlan is done via IOCTL.
          <br>
          What I'm trying to implement is with netlink/rtnellink socket
          in Linux
          <br>
          kernel for beginning. If everything is fine I will document
          how to do
          <br>
          the same think on the BSD.
          <br>
        </blockquote>
        Sure, stepwise implementation is ok.&nbsp; But you will be defining
        <br>
        interfaces that will later have to be implemented on multiple
        systems,
        <br>
        and it's important to get them right the first time.&nbsp; Otherwise
        behavior
        <br>
        may end up changing to accomodate portability, which is awkward.
        <br>
        Because of that, I would be not in favor of merging vlan patches
        until
        <br>
        at least Linux and BSD are supported.&nbsp; (And perhaps *solaris;
        I'm not
        <br>
        clear on how they configure vlans.)
        <br>
        <br>
        The sources for ifconfig(8) on *BSD will be pretty
        straightforward;
        <br>
        that is basically a command-line wrapper around the ioctls.
        <br>
        <br>
        The basic paradigm is
        <br>
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifconfig vlan0 create
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifconfig vlan0 vlan 6 vlanif tlp0
        <br>
        <br>
        to create a vlan interface and associate it with a particular id
        on a
        <br>
        parent (physical) interface.&nbsp; After that it can be treated as
        any other
        <br>
        interface.
        <br>
        <br>
        It sounds like the Linux naming scheme may be different, and how
        to
        <br>
        reconcile all this is important to get right before
        implementing.
        <br>
        <br>
        <br>
        <blockquote type="cite">I want to do this because by default
          Quagga is a routing software so
          <br>
          this can be interpreted like "a routing box" not "a switching
          box" and
          <br>
          the "encapsulation dot1q" is available only in Cisco routes.
          <br>
        </blockquote>
        Understood that at least people would like this.
        <br>
      </blockquote>
      <br>
      <br>
      _______________________________________________
      <br>
      Quagga-dev mailing list
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Quagga-dev@lists.quagga.net">Quagga-dev@lists.quagga.net</a>
      <br>
      <a class="moz-txt-link-freetext" href="http://lists.quagga.net/mailman/listinfo/quagga-dev">http://lists.quagga.net/mailman/listinfo/quagga-dev</a>
      <br>
    </blockquote>
    <br>
  </body>
</html>