1/* 2 * Copyright (C) 2003 Yasuhiro Ohara 3 * 4 * This file is part of GNU Zebra. 5 * 6 * GNU Zebra is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License as published by the 8 * Free Software Foundation; either version 2, or (at your option) any 9 * later version. 10 * 11 * GNU Zebra is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with GNU Zebra; see the file COPYING. If not, write to the 18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 * Boston, MA 02111-1307, USA. 20 */ 21 22#include <zebra.h> 23 24#include "log.h" 25 26#include "ospf6_proto.h" 27 28void 29ospf6_prefix_apply_mask (struct ospf6_prefix *op) 30{ 31 u_char *pnt, mask; 32 int index, offset; 33 34 pnt = (u_char *)((caddr_t) op + sizeof (struct ospf6_prefix)); 35 index = op->prefix_length / 8; 36 offset = op->prefix_length % 8; 37 mask = 0xff << (8 - offset); 38 39 if (index > 16) 40 { 41 zlog_warn ("Prefix length too long: %d", op->prefix_length); 42 return; 43 } 44 45 /* nonzero mask means no check for this byte because if it contains 46 * prefix bits it must be there for us to write */ 47 if (mask) 48 pnt[index++] &= mask; 49 50 while (index < OSPF6_PREFIX_SPACE (op->prefix_length)) 51 pnt[index++] = 0; 52} 53 54void 55ospf6_prefix_options_printbuf (u_int8_t prefix_options, char *buf, int size) 56{ 57 snprintf (buf, size, "xxx"); 58} 59 60void 61ospf6_capability_printbuf (char capability, char *buf, int size) 62{ 63 char w, v, e, b; 64 w = (capability & OSPF6_ROUTER_BIT_W ? 'W' : '-'); 65 v = (capability & OSPF6_ROUTER_BIT_V ? 'V' : '-'); 66 e = (capability & OSPF6_ROUTER_BIT_E ? 'E' : '-'); 67 b = (capability & OSPF6_ROUTER_BIT_B ? 'B' : '-'); 68 snprintf (buf, size, "----%c%c%c%c", w, v, e, b); 69} 70 71void 72ospf6_options_printbuf (u_char *options, char *buf, int size) 73{ 74 const char *dc, *r, *n, *mc, *e, *v6; 75 dc = (OSPF6_OPT_ISSET (options, OSPF6_OPT_DC) ? "DC" : "--"); 76 r = (OSPF6_OPT_ISSET (options, OSPF6_OPT_R) ? "R" : "-" ); 77 n = (OSPF6_OPT_ISSET (options, OSPF6_OPT_N) ? "N" : "-" ); 78 mc = (OSPF6_OPT_ISSET (options, OSPF6_OPT_MC) ? "MC" : "--"); 79 e = (OSPF6_OPT_ISSET (options, OSPF6_OPT_E) ? "E" : "-" ); 80 v6 = (OSPF6_OPT_ISSET (options, OSPF6_OPT_V6) ? "V6" : "--"); 81 snprintf (buf, size, "%s|%s|%s|%s|%s|%s", dc, r, n, mc, e, v6); 82} 83 84 85