1*b636d99dSDavid van Moolenbroek /* 2*b636d99dSDavid van Moolenbroek * Copyright (c) 2013 The TCPDUMP project 3*b636d99dSDavid van Moolenbroek * All rights reserved. 4*b636d99dSDavid van Moolenbroek * 5*b636d99dSDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 6*b636d99dSDavid van Moolenbroek * modification, are permitted provided that the following conditions 7*b636d99dSDavid van Moolenbroek * are met: 8*b636d99dSDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 9*b636d99dSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer. 10*b636d99dSDavid van Moolenbroek * 2. Redistributions in binary form must reproduce the above copyright 11*b636d99dSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer in the 12*b636d99dSDavid van Moolenbroek * documentation and/or other materials provided with the distribution. 13*b636d99dSDavid van Moolenbroek * 14*b636d99dSDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 15*b636d99dSDavid van Moolenbroek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 16*b636d99dSDavid van Moolenbroek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 17*b636d99dSDavid van Moolenbroek * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 18*b636d99dSDavid van Moolenbroek * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 19*b636d99dSDavid van Moolenbroek * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 20*b636d99dSDavid van Moolenbroek * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21*b636d99dSDavid van Moolenbroek * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 22*b636d99dSDavid van Moolenbroek * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*b636d99dSDavid van Moolenbroek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24*b636d99dSDavid van Moolenbroek * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*b636d99dSDavid van Moolenbroek * POSSIBILITY OF SUCH DAMAGE. 26*b636d99dSDavid van Moolenbroek */ 27*b636d99dSDavid van Moolenbroek 28*b636d99dSDavid van Moolenbroek /* OpenFlow: protocol between controller and datapath. */ 29*b636d99dSDavid van Moolenbroek 30*b636d99dSDavid van Moolenbroek /* for netdissect_options */ 31*b636d99dSDavid van Moolenbroek #include "netdissect.h" 32*b636d99dSDavid van Moolenbroek 33*b636d99dSDavid van Moolenbroek #define OF_HEADER_LEN 8 34*b636d99dSDavid van Moolenbroek 35*b636d99dSDavid van Moolenbroek #define ONF_EXP_ONF 0x4f4e4600 36*b636d99dSDavid van Moolenbroek #define ONF_EXP_BUTE 0xff000001 37*b636d99dSDavid van Moolenbroek #define ONF_EXP_NOVIFLOW 0xff000002 38*b636d99dSDavid van Moolenbroek #define ONF_EXP_L3 0xff000003 39*b636d99dSDavid van Moolenbroek #define ONF_EXP_L4L7 0xff000004 40*b636d99dSDavid van Moolenbroek #define ONF_EXP_WMOB 0xff000005 41*b636d99dSDavid van Moolenbroek #define ONF_EXP_FABS 0xff000006 42*b636d99dSDavid van Moolenbroek #define ONF_EXP_OTRANS 0xff000007 43*b636d99dSDavid van Moolenbroek extern const struct tok onf_exp_str[]; 44*b636d99dSDavid van Moolenbroek 45*b636d99dSDavid van Moolenbroek /* 46*b636d99dSDavid van Moolenbroek * Routines to print packets for various versions of OpenFlow. 47*b636d99dSDavid van Moolenbroek */ 48*b636d99dSDavid van Moolenbroek extern const u_char *of10_header_body_print(netdissect_options *ndo, 49*b636d99dSDavid van Moolenbroek const u_char *, const u_char *, 50*b636d99dSDavid van Moolenbroek const uint8_t, const uint16_t, const uint32_t); 51*b636d99dSDavid van Moolenbroek extern const char * of_vendor_name(const uint32_t); 52