The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/netatalk/at_rmx.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: at_rmx.c,v 1.2 2001/11/13 00:00:58 lukem Exp $ */
    2 
    3 /*
    4  * Copyright 1994, 1995 Massachusetts Institute of Technology
    5  *
    6  * Permission to use, copy, modify, and distribute this software and
    7  * its documentation for any purpose and without fee is hereby
    8  * granted, provided that both the above copyright notice and this
    9  * permission notice appear in all copies, that both the above
   10  * copyright notice and this permission notice appear in all
   11  * supporting documentation, and that the name of M.I.T. not be used
   12  * in advertising or publicity pertaining to distribution of the
   13  * software without specific, written prior permission.  M.I.T. makes
   14  * no representations about the suitability of this software for any
   15  * purpose.  It is provided "as is" without express or implied
   16  * warranty.
   17  *
   18  * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''.  M.I.T. DISCLAIMS
   19  * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
   20  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   21  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
   22  * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   25  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   27  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   28  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   29  * SUCH DAMAGE.
   30  *
   31  * at_rmx.c,v 1.13 1995/05/30 08:09:31 rgrimes Exp
   32  */
   33 
   34 /* This code generates debugging traces to the radix code */
   35 
   36 #include <sys/cdefs.h>
   37 __KERNEL_RCSID(0, "$NetBSD: at_rmx.c,v 1.2 2001/11/13 00:00:58 lukem Exp $");
   38 
   39 #include <sys/param.h>
   40 #include <sys/systm.h>
   41 #include <sys/kernel.h>
   42 #include <sys/queue.h>
   43 #include <sys/socket.h>
   44 #include <sys/socketvar.h>
   45 #include <sys/mbuf.h>
   46 #include <sys/syslog.h>
   47 
   48 #include <net/if.h>
   49 #include <net/route.h>
   50 
   51 #include <netatalk/at.h>
   52 #include <netatalk/at_extern.h>
   53 
   54 static char     hexbuf[256];
   55 
   56 char           *
   57 prsockaddr(void *v)
   58 {
   59         char           *bp = &hexbuf[0];
   60         u_char         *cp = v;
   61 
   62         if (v) {
   63                 int             len = *cp;
   64                 u_char         *cplim = cp + len;
   65 
   66                 /* return: "(len) hexdump" */
   67 
   68                 bp += sprintf(bp, "(%d)", len);
   69                 for (cp++; cp < cplim && bp < hexbuf + 252; cp++) {
   70                         *bp++ = "0123456789abcdef"[*cp / 16];
   71                         *bp++ = "0123456789abcdef"[*cp % 16];
   72                 }
   73         } else {
   74                 bp += sprintf(bp, "null");
   75         }
   76         *bp = '\0';
   77 
   78         return &hexbuf[0];
   79 }
   80 
   81 static struct radix_node *
   82 at_addroute(void *v_arg, void *n_arg, struct radix_node_head * head,
   83             struct radix_node * treenodes)
   84 {
   85         struct radix_node *rn;
   86 
   87         printf("at_addroute: v=%s\n", prsockaddr(v_arg));
   88         printf("at_addroute: n=%s\n", prsockaddr(n_arg));
   89         printf("at_addroute: head=%x treenodes=%x\n", head, treenodes);
   90 
   91         rn = rn_addroute(v_arg, n_arg, head, treenodes);
   92 
   93         printf("at_addroute: returns rn=%x\n", rn);
   94 
   95         return rn;
   96 }
   97 
   98 static struct radix_node *
   99 at_matroute(void *v_arg, struct radix_node_head * head)
  100 {
  101         struct radix_node *rn;
  102 
  103         printf("at_matroute: v=%s\n", prsockaddr(v_arg));
  104         printf("at_matroute: head=%x\n", head);
  105 
  106         rn = rn_match(v_arg, head);
  107 
  108         printf("at_matroute: returns rn=%x\n", rn);
  109 
  110         return rn;
  111 }
  112 
  113 static struct radix_node *
  114 at_lookup(void *v_arg, void *m_arg, struct radix_node_head * head)
  115 {
  116         struct radix_node *rn;
  117 
  118         printf("at_lookup: v=%s\n", prsockaddr(v_arg));
  119         printf("at_lookup: n=%s\n", prsockaddr(m_arg));
  120         printf("at_lookup: head=%x\n", head);
  121 
  122         rn = rn_lookup(v_arg, m_arg, head);
  123 
  124         printf("at_lookup: returns rn=%x\n", rn);
  125 
  126         return rn;
  127 }
  128 
  129 static struct radix_node *
  130 at_delroute(void *v_arg, void *netmask_arg, struct radix_node_head * head)
  131 {
  132         struct radix_node *rn;
  133 
  134         printf("at_delroute: v=%s\n", prsockaddr(v_arg));
  135         printf("at_delroute: n=%s\n", prsockaddr(netmask_arg));
  136         printf("at_delroute: head=%x\n", head);
  137 
  138         rn = rn_delete(v_arg, netmask_arg, head);
  139 
  140         printf("at_delroute: returns rn=%x\n", rn);
  141 
  142         return rn;
  143 }
  144 
  145 /*
  146  * Initialize our routing tree with debugging hooks.
  147  */
  148 int
  149 at_inithead(void **head, int off)
  150 {
  151         struct radix_node_head *rnh;
  152 
  153         if (!rn_inithead(head, off))
  154                 return 0;
  155 
  156         rnh = *head;
  157         rnh->rnh_addaddr = at_addroute;
  158         rnh->rnh_deladdr = at_delroute;
  159         rnh->rnh_matchaddr = at_matroute;
  160         rnh->rnh_lookup = at_lookup;
  161         return 1;
  162 }

Cache object: fb355acecf00a633a9ac20a4bf83ad42


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.