> Hi, > before I implement something that would never work with our stack, could you > please help me with some (basic?) BSD stuff? > I plan to implement dial-on-demand the following way: > When an interface registers itself to the ppp_interface_manager it gets an > ifnet structure assigned. > The if_flags are set to IFF_UP | IFF_POINTTOPOINT. > This happens will all interfaces regardless whether dial-on-demand is set or > not. > The following is only done with dial-on-demand interfaces: > > 1) The IP Control Protocol adds itself as the default route and uses an > undefined class A dst address (?10.0.0.1 + if_unit?) and an undefined class > A interface address (?10.127.0.1 + if_unit?). BTW, do we have a function > that returns the netmask of some ip-address? > AFAIK, calling SIOCSIFDSTADDR also sets the default route automatically and > it has a special handling for IFF_POINTTOPOINT. Does it check if the return > value of the interface is ok and add the route only then? > Which ioctl should bring the interface up? SIOCSIFFLAGS or SIOCSIFADDR or > both? > How do I prevent changing the interface's ip? > Do I have to add an ifaddr for each protocol? > > 2) When the interface must send some data it Up()s itself. Up() adds > IFF_RUNNING to if_flags if it was successful. > All threads that try to send something are blocked and wait until Up() is > done. If Up() fails they delete the mbuf and return an error. > Also, when the IP Control Protocol is brought up it > SIOCSIFDSTADDRs+SIOCSIFADDRs the received ip addresses. > > 3) A Down() (or whatever might cause it) will bring us back to 1) > > Do you think this will work? Do what you want. ;) Seriously, was this a too stupid question? Am I too stupid? Someone put the code together, so he/she should know if this is right or wrong. Where is this person and why does this person refuse to help me? Am I not worth being helped? :)) Waldemar