h(j      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij k lm n DComputes the path tree from one node to another node of the graph. Z Each node of the tree is a path in the graph from the source to some node in the graph. Z The parent of a node is the node representing the path with one less edge than the node. CNeat 2-dimensional drawing of a tree. Mostly borrowed from code in  Data.Tree module. o      The input is a matrix where the (i,j)' entry contains the distance of a path  going from node i to node jC in the graph as well as the next hop node in the path and a value  (left polymorphic, of type aW here) representing the link (e.g. a link identifier, particularly useful if there can ~ more than one link between nodes). If the distance is |Infinity| then the next hop and link identifier should be |Nothing|. : Typically, this function is applied to an array in which (i,j)? value contains the distance and the link ID for one link from  i to j. ^Extracts the shortest path from the matrix computed by |floydWarshall|. The path includes the & the nodes and the links of the path. pq, !"#$%&'()*+,-./0123456789:;<=>?EWhen a switch encounters an error condition, it sends the controller ) a message containing the information in SwitchErrorRecord. @ABCDE, !"#$%&'()*+,-./0123456789:;<=>?@ABCDE,?EDCBA@<>=2;:9876543(10/.-,+*)!'&%$#" ,  !'&%$#""#$%&'( 10/.-,+*))*+,-./012 ;:98765433456789:;<>==>?EDCBA@@ABCDEFGrsH.Runs the Put writer with write position given 3 by the first pointer argument. Returns the number  of words written. IMAllocates a new byte string, and runs the Put writer with that byte string. _ The first argument is an upper bound on the size of the array needed to do the serialization. JKL$Write a Word32 in big endian format M$Write a Word64 in big endian format Ntuv FGHIJKLMN GFHIJKLMN FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiOPQRSTUVWXYZ[\w]^_`abcdefghiQRPOSTUVWXYZ[\]^_`abcdefghiOPQRRSTUVWXYZ[\]^_`abcdefghi.jklmnopqJThe body of an IP packet can be either a TCP, UDP, ICMP or other packet. ? Packets other than TCP, UDP, ICMP are represented as unparsed  ByteString values. rstuvwxyz{hAn IP Header includes various information about the packet, including the type of payload it contains. Y Warning: this definition does not include every header field included in an IP packet. |}~2differentiated services code point - 6 bit number .An IP packet consists of a header and a body. xyz{|}(jklmnopqrstuvwxyz{|}~({|}~zyxwvqutsrponmlkj(jklmnopqutsrrstuvwxyz{|}~|}~ PAn Ethernet address consists of 6 bytes. It is stored in a single 64-bit value. ~1Builds an ethernet address from a Word64 value. R The two most significant bytes are irrelevant; only the bottom 6 bytes are used. ,Parse an Ethernet address from a ByteString 1Unparse an Ethernet address to a ByteString 1Unparse an Ethernet address to a ByteString Parser for ARP packets Parser for ARP packets  (QEthernet type code, determines the type of payload carried by an Ethernet frame. MAn Ethernet frame is either an IP packet, an ARP packet, or an uninterpreted  ByteString.  Based on http:en.wikipedia.orgwiki'File:Ethernet_Type_II_Frame_format.svg source hardware address source IP address target IP address source hardware address source IP address target hardware address target IP address Parser for Ethernet frames. Parser for Ethernet headers. Unparser for Ethernet headers. #&#  4-The reason that a port status update message  was sent. The  PortStatus" represents information regarding ' a change to a port state on a switch.  A port can be configured with a PortMod message. port number of port to modify hardware address of the port ; (redundant with the port number above; both are required) +attributes mapped to true will be set on, 1 attributes mapped to false will be turned off, * and attributes missing will be unchanged Set of 's. Specification: bitmap of members in enum  ofp_port_features. &Possible port features. Specification ofp_port_features. 10 Gb full-duplex rate support 1 Gb full-duplex rate support 1 Gb half-duplex rate support  100 Mb full-duplex rate support  100 Mb half-duplex rate support 10 Mb full-duplex rate support 10 Mb half-duplex rate support 6Possible behaviors of a physical port. Specification:  ofp_port_config. -do not send packet-in messages for this port drop packets forwarded to port 'do not include this port when flooding !drop received 802.1D STP packets 5drop all packets except 802.1D spanning tree packets *disable 802.1D spanning tree on this port port is administratively down hA switch receives and sends packets on a port; The Port data type models attributes of a physical port. /value datapath associates with a physical port human-readable interface name !the Ethernet address of the port :describes spanning tree and administrative settings #describes whether the link is down describes spanning tree state port's current features features advertised by port features supported by port features advertised by peer 444   >ISequence of actions, represented as finite lists. The Monoid instance of < lists provides methods for denoting the do-nothing action (mempty)) and for concatenating action sequences mconcat.  1A send to controller action includes the maximum 1 number of bytes that a switch will send to the  controller.  A  PseudoPort$ denotes the target of a forwarding  action.  process packet with flow table  process with normal L2/ L3 switching  send to controller .send out all physical ports except input port Hsend out all physical ports except input port and those disabled by STP send packet out the input port %send out physical port with given id ;Each flow table entry contains a list of actions that will / be executed when a packet matches the entry.  Specification: ofp_action_header and all  ofp_action_* structures. output to queue port the queue belongs to where to enqueue the packets set TCP/UDP destination port set TCP/UDP source port IP ToS (DSCP field) set IP destination address set IP source address !set ethernet destination address set ethernet source address strip the 802.1q header set the 802.1q priority  set the 802.1q VLAN ID !send out given port "=The supported switch actions are denoted with these symbols. #$%&'()*+,-./ send p is a packet send action. 012345789:;<=>?@ABC>      !"#$%&'()*+,-./0123456789:;<=>?@ABC>! "/.-,+*)('&%$#     0154327689:;<=>?@ABC=        !  !" /.-,+*)('&%$##$%&'()*+,-./012345789:;<=>?@ABCDEFGHIJKLMNOP7The switch capabilities are denoted with these symbols Qcan reassemble IP fragments R"match IP addresses in ARP packets Scan provide queue statistics TU+supports the 802.1d spanning tree protocol Vcan provide port statistics Wcan provide table statistics Xcan provide flow statistics Y<A unique identifier for a switch, also known as DataPathID. ZBThe switch features record, summarizes information about a switch [\unique switch identifier ]1maximum number of packets buffered at the switch ^number of flow tables _switch's capabilities `switch's supported actions a#description of each port on switch b$Maximum number of ports on a switch DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abZ[\]^_`aYPXWVUTSRQbNOLMJKIGHDFEDFEEFGHHIJKKLMMNOOPXWVUTSRQQRSTUVWXYZ[\]^_`a[\]^_`abc!The number of bytes in a packet. d:A PacketInfo message includes the reason that the message : was sent, namely either there was no match, or there was  a match, and that match'(s actions included a Sent-To-Controller  action. efg>A switch receives packets on its ports. If the packet matches @ some flow rules, the highest priority rule is executed. If no @ flow rule matches, the packet is sent to the controller. When > packet is sent to the controller, the switch sends a message ' containing the following information. hibuffer ID if packet buffered jfull length of frame k!port on which frame was received lreason packet is being sent m:ethernet frame, includes full packet only if no buffer ID n$result of parsing packetData field. o0A switch may buffer a packet that it receives. 4 When it does so, the packet is assigned a bufferID , which can be used to refer to that packet. p@A switch can be remotely commanded to send a packet. The packet B can either be a packet buffered at the switch, in which case the D bufferID is provided, or it can be specified explicitly by giving  the packet data. qr&either a buffer ID or the data itself sSthe port at which the packet received, for the purposes of processing this command tactions to apply to the packet u Constructs a  PacketOut* value for a packet buffered at a switch. v Constructs a  PacketOut< value for an unbuffered packet, including the packet data. w Constructs a  PacketOut4 value that processes the packet referred to by the  PacketInfo value & according to the specified actions. xcdefghijklmnopqrstuvwxpqrstuvwoghijklmndfecxcdfeefghijklmnhijklmnopqrstqrstuvwxyXEach flow entry includes a match, which essentially defines packet-matching condition. " Fields that are left Nothing are  wildcards. z{|}~#A match that matches every packet. Return True if given zy$ represents an exact match, i.e. no ! wildcards and the IP addresses' prefixes cover all bits. 9Utility function to get an exact match corresponding to ) a packet (as given by a byte sequence). 2Models the match semantics of an OpenFlow switch. yz{|}~yz{|}~y z{|}~z{|}~-OWhen a switch removes a flow, it may send a message containing the information  in FlowRemovedRecord to the controller. 1Each flow entry has idle and hard timeout values  associated with it. wThe priority of a flow entry is a 16-bit integer. Flow entries with higher numeric priorities match before lower ones. -?- )YTable ID of the flow Match condition of the flow Actions for the flow EPriority of the flow entry (meaningful when the match is not exact). !Cookie associated with the flow.      fields to match ID of table to read Gif present, require matching entries to include this as an output port ,A port stats value with all fields missing. :A port stats value with all fields present, but set to 0. KLift a unary function and apply to every member of a PortStats record. LLift a binary function and apply to every member of a PortStats record. Y     \      Y             6The controller can send these messages to the switch. Controller requests a barrier Controller requests statistics $Controller configures a switch port (Controller modifies a switch flow table ,Controller commands switch to send a packet )Controller requests features information -Controller responds to a switch echo request "Controller requests a switch echo  =Controller must send hello before sending any other messages !/The Switch can send the following messages to  the controller. "#2Switch responds that a barrier has been processed $Switch reports an error %Switch reports statistics &,Switch reports that a flow has been removed 'Switch sends port status ((Switch sends a packet to the controller )Switch reports its features *#Switch responds to an echo request +Switch requests an echo reply ,CSent after a switch establishes a TCP connection to the controller -9Every OpenFlow message is tagged with a MessageID value.  !"#$%&'()*+,--!,+*)('&%$#"    ! ,+*)('&%$#""#$%&'()*+,-JA set of flow mod attributes can be added to a flow modification command. Specification: ofp_flow_mod_command. .OpenFlow message header /01234 Parser for  SCMessages 5 Parser for  CSMessages 6 Unparser for  SCMessages %Unparser for OpenFlow message header 7AParser for the OpenFlow message header 89: Unparser for  CSMessages       !"#$%&'()*+,-./0123456789:; ./0123456789: 748659:./0123 ./0123/0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEOPQRSTUVWXYZ[\w]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;;Abstract type managing the state of the switch connection. <;Abstract type containing the state of the OpenFlow server. =>Starts an OpenFlow server. S The server socket will be bound to a wildcard IP address if the first argument is $ and will be bound to a particular " address if the first argument is  something. The = value can either be an IP address in dotted quad notation, j like 10.1.30.127, or a host name, whose IP address will be looked up. The server port must be specified. ?Closes the OpenFlow server. @>Blocks until a switch connects to the server and returns the  switch handle. A6Returns the socket address of the switch connection. BCPBlocks until a message is received from the switch or the connection is closed.  Returns # only if the connection is closed. DSend a message to the switch. EFGH Close a switch connection. IJTRepeatedly perform the first action, passing its result to the second action, until # the result of the first action is *, at which point the computation returns. ;<=>?@ABCDEFGHIJ<=>@?;IACBDEFGHJ;<=>?@ABCDEFGHIJKUThe type of externally visible events that may occur for the multiplexed TCP server. LA message of type a9 has been received from the peer with the given address. MOA connection with the given address is terminated, due to the given exception. N>A connection to a peer with the given address is established. OeRuns a server that returns two commands, one to receive the next message from any connected client, , and one that sends a message to a client. =KLMNOOKNML=KNMLLMNOPNAbstract type representing the state of the connection to the control server. Q>Established a connection to the control server with the given   and  and returns its P. R Creates a P5 based on a handle to read from and one to write to. S.Close client, closing read and write handles. TVBlocks until a new control message arrives or the connection is terminated, in which  the return value is . U+Sends a message to the controller. VPQRSTUVPQRSTUVPQRSTUVWXYZ[\]^_`abcdefghiWXYZ[\]^_`abcdefghi[XYZea`bcdfg_\YZW]^hiWXYZYZ[\]^_`abcdefghi !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{|}~                                                                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W XYZ[\]^__`abbcdefghijklmmnopqrstuvwxyyz{|}~      !" #$%&'`()*+,-./00123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde*fghi#jklmnopbqrstuvwxyz{  | } ~           !"#$%&'()*+,-./012345678978:78;78<78=7>?7@A7@B78C78D7EF7EG7EH7EI7EJ7EK7EL7EM7>N7@OPQR7ES7ET7EU7EV7@W7@X7@Y7@Z7@[7@\7@]7@^7@_7@`7@a7@b7@c7@d7@e7@f7@g7@h7@i7@j7@k7@l7@m7@n7@o7@p7@q7@r7@s7@t7@u7vw7vx7yz7{|7}~7}7}7}77777E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7y7y7y7y7y7y777777777v       !"#$%&''(()*)+),),)-./012334565758595:5;5<5=5>5?5@ABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATUVWXYZ[\]^_`abcdefghijklmnmompqrqsqtquqvqwqxqyqzq{q|q}q~qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<=77Q XYnettle-openflow-0.2.0Nettle.Servers.ServerNettle.Topology.ExtendedDoubleNettle.Topology.LabelledGraphNettle.Topology.FloydWarshallNettle.OpenFlow.ErrorNettle.OpenFlow.StrictPutNettle.IPv4.IPAddressNettle.IPv4.IPPacketNettle.Ethernet.EthernetAddress)Nettle.Ethernet.AddressResolutionProtocolNettle.Ethernet.EthernetFrameNettle.OpenFlow.PortNettle.OpenFlow.ActionNettle.OpenFlow.SwitchNettle.OpenFlow.PacketNettle.OpenFlow.MatchNettle.OpenFlow.FlowTableNettle.OpenFlow.StatisticsNettle.OpenFlow.MessagesNettle.OpenFlow.MessagesBinary#Nettle.Servers.MultiplexedTCPServerNettle.Servers.ClientNettle.Topology.TopologyNettle.OpenFlownetwork-2.3.0.8Network.SocketHostNameExtendedDoubleInfinityFiniteaddExtendedDoubleLTreeLNodeWeight LabelledGraph sourceTargetnodes numberOfNodesedges edgesFromTo edgesOutOfemptyaddNodeaddEdgeadjustEdgeWeight deleteNode deleteEdgemapLTreepathTreedrawTree floydWarshall shortestPath QueueOpErrorQueueOpPermissionsErrorQueueDoesNotExistQueueOpBadPort PortModErrorBadHardwareAddressBadPort FlowModErrorUnsupportedActionList BadCommandEmergencyModHasTimeoutsFlowModPermissionsErrorOverlappingFlow TablesFull ActionError InvalidQueueTooManyActionsActionPermissionsErrorBadActionArgument BadOutPortUnknownActionTypeForVendorUnknownVendorIDBadActionLengthUnknownActionType RequestError UnknownBuffer BufferEmptyBadRequestLengthRequestPermissionsErrorVendorSubtypeNotSupportedVendorNotSupportedStatsRequestTypeNotSupportedMessageTypeNotSupportedVersionNotSupported HelloFailureHelloPermissionsErrorIncompatibleVersions SwitchErrorQueueOperationFailed PortModFailed FlowModFailed BadAction BadRequest HelloFailedPutPutMrunPutrunPutToByteStringputWord8 putWord16be putWord32be putWord64be putByteString PrefixLengthIPAddressPrefix IPAddressipAddressToWord32 ipAddress getIPAddress getIPAddress2 putIPAddress// addressPart prefixLength maxPrefixLen prefixIsExactaddressToOctets showOctets showPrefix prefixPlusprefixOverlaps elemOfPrefix intersect intersectsdisjoint disjointsisSubsetparseIPAddressipAddressParser UDPPortNumber UDPHeader TCPPortNumber TCPHeaderICMPCodeICMPType ICMPHeaderIPBodyUninterpretedIPBodyICMPInIPUDPInIPTCPInIP TransportPortIPTypeOfService IPProtocol FragOffsetDifferentiatedServicesCodePointIPHeader ipSrcAddress ipDstAddress ipProtocol headerLength totalLengthdscpIPPacket ipTypeTcp ipTypeUdp ipTypeIcmp foldIPPacket foldIPBody fromTCPPacket fromUDPPacket withIPPacket getIPHeader getIPPacket getIPPacket2 getICMPHeader getTCPHeader getUDPHeaderEthernetAddressethernetAddress64ethernetAddress pack_32_16unpackunpack64getEthernetAddressgetEthernetAddress2putEthernetAddressputEthernetAddress2 isReservedbroadcastAddressARPReplyPacketreplySenderEthernetAddressreplySenderIPAddressreplyTargetEthernetAddressreplyTargetIPAddressARPQueryPacketquerySenderEthernetAddressquerySenderIPAddressqueryTargetIPAddress ARPPacketARPReplyARPQuery getARPPacket getARPPacket2 putARPPacketVLANIDEthernetTypeCode VLANPriorityEthernetHeader Ethernet8021QpriorityCodePointcanonicalFormatIndicatorvlanIddestMACAddresssourceMACAddresstypeCode EthernetBodyUninterpretedEthernetBody ARPInEthernet IPInEthernet EthernetFramefoldEthernetFramefoldEthernetBody eth_ip_packeteth_ip_tcp_packeteth_ip_udp_packetarpQueryarpReplygetEthernetFramegetEthernetFrame2 getEthHeader2 getEthHeader putEthHeader putEthFrame ethTypeIP ethTypeARP ethTypeLLDP ethTypeVLANtypeEth2CutoffPortStatusUpdateReason PortModified PortDeleted PortAdded PortStatusPortMod PortModRecord portNumberhwAddrattributesToSet PortFeatures PortFeatureAsymmetricPausePauseAutoNegotiationFiberCopper Rate10GbFD Rate1GbFD Rate1GbHD Rate100MbFD Rate100MbHD Rate10MbFD Rate10MbHDPortConfigAttribute NoPacketInMsg DropForwarded NoFlooding NoSTPackets OnlySTPackets STPDisabledPortDownSpanningTreePortState STPBlocking STPForwarding STPLearning STPListeningPortIDPortportIDportName portAddress portConfig portLinkDown portSTPStateportCurrentFeaturesportAdvertisedFeaturesportSupportedFeaturesportPeerFeaturesportAttributeOnportAttributeOffActionSequenceQueueIDVendorIDMaxLenToSendController PseudoPort WithTableNormalSwitching ToControllerAllPhysicalPortsFloodInPort PhysicalPortAction VendorActionEnqueue enqueuePortqueueIDSetTransportDstPortSetTransportSrcPortSetIPToS SetIPDstAddr SetIPSrcAddr SetEthDstAddr SetEthSrcAddrStripVlanHeaderSetVlanPriority SetVlanVID SendOutPort ActionTypeVendorActionType EnqueueTypeSetTransportDstPortTypeSetTransportSrcPortTypeSetIPTypeOfServiceTypeSetIPDstAddrTypeSetIPSrcAddrTypeSetEthDstAddrTypeSetEthSrcAddrTypeStripVlanHeaderTypeSetVlanPriorityTypeSetVlanVIDTypeOutputToPortType sendOnPort sendOnInPortflooddropallPhysicalPortsprocessNormallyprocessWithTablesendToController setVlanVIDsetVlanPrioritystripVlanHeader setEthSrcAddr setEthDstAddr setIPSrcAddr setIPDstAddrsetIPToSsetTransportSrcPortsetTransportDstPortenqueue vendorAction QueueRateEnabledDisabled QueueProperty MinRateQueue QueueLength QueueConfigQueueConfigReplyPortQueueConfigQueueConfigRequestSwitchCapabilityCanReassembleIPFragmentsCanMatchIPAddressesInARPPacketsHasQueueStatistics)MayTransmitOverMultiplePhysicalInterfaces SpanningTree HasPortStats HasTableStats HasFlowStatsSwitchIDSwitchFeaturesswitchIDpacketBufferSizenumberFlowTables capabilitiessupportedActionsportsmaxNumberPortsNumBytesPacketInReason ExplicitSend NotMatched PacketInfobufferID packetLengthreceivedOnPort reasonSent packetData enclosedFrameBufferID PacketOutPacketOutRecord bufferIDData packetInPort packetActionsbufferedPacketOutunbufferedPacketOutreceivedPacketOutbufferedAtSwitchMatchinPort srcEthAddress dstEthAddressvLANID vLANPriority ethFrameTypeipTypeOfServicematchIPProtocol srcIPAddress dstIPAddresssrcTransportPortdstTransportPortmatchAny isExactMatch ofpVlanNoneframeToExactMatchframeToExactMatchNoPort getExactMatchmatchesFlowRemovalReasonDeletedByControllerHardTimerExpiredIdleTimerExpired FlowRemovedFlowRemovedRecordflowRemovedMatchflowRemovedCookieflowRemovedPriorityflowRemovedReasonflowRemovedDurationflowRemovedDurationNSecsflowRemovedIdleTimeoutflowRemovedPacketCountflowRemovedByteCountTimeOut ExpireAfter PermanentPriorityCookieFlowModDeleteExactFlow DeleteFlowsoutPortModifyExactFlow ModifyFlows newActionsifMissingPriorityifMissingCookieifMissingIdleTimeOutifMissingHardTimeOutifMissingNotifyWhenRemovedifMissingOverlapAllowedAddEmergencyFlowAddFlowmatchpriorityactionscookie idleTimeOut hardTimeOutnotifyWhenRemoved applyToPacketoverlapAllowed FlowTableID QueueStatsqueueStatsPortIDqueueStatsQueueIDqueueStatsTransmittedBytesqueueStatsTransmittedPacketsqueueStatsTransmittedErrors PortStatsportStatsReceivedPacketsportStatsSentPacketsportStatsReceivedBytesportStatsSentBytesportStatsReceiverDroppedportStatsSenderDroppedportStatsReceiveErrorsportStatsTransmitErrorportStatsReceivedFrameErrorsportStatsReceiverOverrunErrorportStatsReceiverCRCErrorportStatsCollisions TableStatstableStatsTableIDtableStatsTableNametableStatsMaxEntriestableStatsActiveCounttableStatsLookupCounttableStatsMatchedCount FlowStatsflowStatsTableIDflowStatsMatchflowStatsActionsflowStatsPriorityflowStatsCookieflowStatsDurationSecondsflowStatsDurationNanosecondsflowStatsIdleTimeoutflowStatsHardTimeoutflowStatsPacketCountflowStatsByteCountAggregateFlowStatsaggregateFlowStatsPacketCountaggregateFlowStatsByteCountaggregateFlowStatsFlowCount DescriptionmanufacturerDesc hardwareDesc softwareDesc serialNumber datapathDescMoreToFollowFlag StatsReplyQueueStatsReplyPortStatsReplyTableStatsReplyAggregateFlowStatsReplyFlowStatsReplyDescriptionReply TableQueryTableEmergencyTable AllTables QueueQuery SingleQueue AllQueues PortQuery SinglePortAllPorts StatsRequestQueueStatsRequestqueueStatsPortqueueStatsQueryPortStatsRequestportStatsQueryDescriptionRequestTableStatsRequestAggregateFlowStatsRequestFlowStatsRequeststatsRequestMatchstatsRequestTableIDstatsRequestPort nullPortStats zeroPortStatsliftIntoPortStats1liftIntoPortStats2 CSMessageGetQueueConfigVendor SetConfigBarrierRequestFeaturesRequest CSEchoReply CSEchoRequestCSHello SCMessage BarrierReplyErrorPacketInFeatures SCEchoReply SCEchoRequestSCHello TransactionID OFPHeader msgVersionmsgType msgLengthmsgTransactionID getSCMessage getCSMessage putSCMessage getHeadergetSCMessageBodygetCSMessageBody putCSMessage SwitchHandleOpenFlowServerServerPortNumberstartOpenFlowServer closeServer acceptSwitchswitchSockAddr receiveBatchreceiveFromSwitch sendToSwitch sendBatch sendBatchessendToSwitchWithIDcloseSwitchHandlehandle2SwitchID untilNothing TCPMessage PeerMessageConnectionTerminatedConnectionEstablishedmuxedTCPServer ClientHandleconnectToControllerconnectToHandles closeClientreceiveControlMessage sendMessage flushClientShortestPathMatrixTopologylGraph edgePortsLinkIDlinksshortestPathMatrix pathBetween lookupLinkadjustLinkWeightaddLink deleteLink addSwitch deleteSwitch addEdgePort addEdgePortscompleteTopology makeTopology edgesLeavingweightOfsourceshortestEdgeFromTodrawpathpathMapunPut shiftr_w16 shiftr_w32 shiftr_w64defaultIPPrefix getIPHeader2 getIPProtocolgetIPProtocol2getICMPHeader2 getTCPHeader2 getUDPHeader2 queryOpCode replyOpCode withFrame fromIPPacket fromARPPacketeth_arp_packet clearBitssend addEthHeaders addIPHeaders addARPHeadersOFPMatchofpm_wildcards ofpm_in_port ofpm_dl_src ofpm_dl_dst ofpm_dl_vlanofpm_dl_vlan_pcp ofpm_dl_type ofpm_nw_tos ofpm_nw_proto ofpm_nw_src ofpm_nw_dst ofpm_tp_src ofpm_tp_dst FlowModFlag Emergency CheckOverlapSendFlowRemoved FlowModTypeFlowDeleteStrictTypeFlowDeleteTypeFlowModifyStrictTypeFlowModifyType FlowAddTypeFlowModRecordInternalcommand'match'actions' priority' idleTimeOut' hardTimeOut'flags' bufferID'outPort'cookie'OpenFlowVersionIDMessageTypeCode ofptHello ofptErrorofptEchoRequest ofptEchoReply ofptVendorofptFeaturesRequestofptFeaturesReplyofptGetConfigRequestofptGetConfigReply ofptSetConfig ofptPacketInofptFlowRemovedofptPortStatus ofptPacketOut ofptFlowMod ofptPortModofptStatsRequestofptStatsReplyofptBarrierRequestofptBarrierReplyofptQueueGetConfigRequestofptQueueGetConfigReplypacketInMessageBodyLenputPacketInRecord ofpVersion headerSize putHeadergetQueueConfigReply ofpqtMinRate getSetConfiggetVendorMessage putPhyPort getPhyPortfeaturesBitVectorfeatureBitMaskdecodePortFeatureSetfeaturePositions ofppsLinkDownofppsStpListen ofppsStpLearnofppsStpForwardcode2PortStateportState2CodebitMap2PortConfigAttributeSetportConfigsBitVectorportAttribute2BitMaskportAttributeSet2BitMaskbitMap2SwitchCapabilitySetswitchCapabilitiesBitVectorswitchCapability2BitMaskbitMap2SwitchActionSetactionTypesBitVectorcode2ActionTypeactionType2CodeactionType2CodeBijectionactionType2BitMaskgetPacketInRecord code2Reason reason2Code getPortStatusgetSwitchErrorputSwitchErrorcode2ErrorTypegetFlowRemovedRecordflowRemovalReason2CodeBijection getStatsReplygetQueueStatsRepliesgetDescriptionReplygetCharsRightPaddedgetTableStatsRepliesgetTableStatsReplygetFlowStatsRepliesgetFlowStatsReply getActiongetActionForTypegetAggregateStatsRepliesgetPortStatsRepliesgetPortStatsReplyputQueueConfigRequestsendPacketSizeInBytes putSendPacket getPacketOutgetActionsOfSizeflowModSizeInBytes'flowModToFlowModInternal putFlowMod getBufferID getOutPortgetFlowModInternal getFlowModflowModInternal2FlowModmaybeTimeOutToCodegetTimeOutFromCodeflagSet2BitMapflowModFlagToBitMaskBijectionbitMap2FlagSetgetFlowModFlagsofpfcAdd ofpfcModifyofpfcModifyStrict ofpfcDeleteofpfcDeleteStrictflowModTypeBimapgetFlowModType putAction putPseudoPortactionSizeInBytes typeOfAction portModLength putPortModstatsRequestSizeputStatsRequestqueryToPortNumberqueryToQueueID ofppInPort ofppTable ofppNormal ofppFloodofppAllofppController ofppLocalofppNone fakePort2Code code2FakePorttableQueryToCode ofpstDesc ofpstFlowofpstAggregate ofpstTable ofpstPort ofpstQueue ofpstVendor matchSizegetMatchputMatchofpMatch2Matchmatch2OFPMatch getWord8s putWord8sbaseGHC.Basefail>>=>>fmapreturnControl.Monad.Fixmfix Control.MonadguardliftMMonadFunctorData.Typeable.InternalTypeable Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7MonadFix MonadPlusghc-primGHC.Prim RealWorldtypeOfTyConTypeRep mkTyConAppmzeromplus=<<sequence sequence_mapMmapM_filterMforMforM_msum>=><=<forevervoidjoin mapAndUnzipMzipWithM zipWithM_foldMfoldM_ replicateM replicateM_whenunlessliftM2liftM3liftM4liftM5apmfilterGHC.STfixSTrunST Data.TypeablecastGHC.IOstToIO GHC.STRefSTRefnewSTRef readSTRef writeSTRef GHC.IORefIORefnewIORef readIORef writeIOReftypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1mkFunTy splitTyConApp funResultTymkAppTymkTyCon3 typeRepTyCon typeRepArgs tyConString typeOfDefaulttypeOf1DefaulttypeOf2DefaulttypeOf3DefaulttypeOf4DefaulttypeOf5DefaulttypeOf6Default showsTypeRep TypeRepKey typeRepKeymkTyCongcastgcast1gcast2 Data.IORef mkWeakIORef modifyIORefatomicModifyIORef Data.FunctionfixControl.Monad.STunsafeInterleaveST unsafeIOToST unsafeSTToIO Data.STRef modifySTRefST HList-0.2.3Data.HList.TIP tipySplit tipyProject tipyUpdate tipyDeleteonTIPhExtend'Data.HList.HArray hSplitByHNats Data.HListconcrete#Data.HList.GhcSyntax.+..<++..<..^..@..-..!..=..*.:*::=::+:Data.HList.GhcRecord proxyTcName hFieldTcName recordTcName hConsTcName hNilTcNamenilLub hasNoProxies hUnproxyLabel ProxyFound HasNoProxiesnarrowMNarrowMnarrowM'NarrowM' narrowM'' NarrowM''narrowNarrow lubNarrow LubNarrowNilLubconsLubConsLubhLubHLubequivR RecordEquivequivR' RecordEquiv'Data.HList.GhcExperimentsfunType hDeleteMany HDeleteManyIsTC1IsTC2Data.HList.Variant unVariant mkVariantVarianthMaybiedHMaybiedData.HList.Record hRearrangehTPupdateAtLabel hRenameLabelhProjectByLabels2hProjectByLabelshUpdateAtLabelhDeleteAtLabel recordValues recordLabels recordLabels' emptyRecordmkRecord newLVPair labelLVPair valueLVPairLVPairRecord HRLabelSet HRLabelSet' HLabelSet HLabelSet'DuplicatedLabel RecordLabels recordValues' RecordValuesshowComponentsShowComponents showLabel ShowLabelhLookupByLabelHasFieldhLookupByLabel' HasField'h2projectByLabelsH2ProjectByLabelsh2projectByLabels'H2ProjectByLabels' hLeftUnion HLeftUnionhLeftUnionBoolHLeftUnionBoolunionSR UnionSymRecunionSR' UnionSymRec' hRearrange2 HRearrange hRearrange2' HRearrange' ExtraField FieldNotFoundData.HList.TICunTICmkTICTIC HTypeProxiedoneTruetupleemptyTIPunTIPmkTIPTIP HTypeIndexedData.HList.HTypeIndexedhSplitByProxieshProjectByProxies hUpdateAtTypehDeleteAtProxy hType2HNathDeleteManyCaseHDeleteManyCase HType2HNatHType2HNatCase hTypes2HNats HTypes2HNatsData.HList.HOccurs hOccursMany HOccursMany hOccursMany1 HOccursMany1 hOccursFst HOccursFsthOccursHOccurs TypeNotFoundhOccurs'HOccurs' hOccursBool HOccursBool hOccursOpt HOccursOpt TypeFound HOccursNothProjectHProjecthSinglehLength hLookupByHNat HLookupByHNat hDeleteAtHNat HDeleteAtHNat hUpdateAtHNat HUpdateAtHNathSplitByHNats'HSplitByHNats'hProjectByHNatsHProjectByHNatshProjectAwayByHNatsHProjectAwayByHNatshBetweenHBetweenhDiffHDiff hOrdMember HOrdMemberHLength HMaxLength HMinLength HSingletonData.HList.HZiphUnziphZipHZipData.HList.HListPreludehFlaghRmTaghAddTaghTMemberhMemberhMap'hAppend'append'hMapM_hMapMhBuildhEndappendhConshNilHNilHConsHListhHeadHHeadhTailHTailhExtendHExtendhAppendHAppendhReverseHReverse hReverse' HReverse' naiveHReverse NaiveHReversehBuild'HBuild'applyApplyIdhFoldrHFoldrhMapHMaphMapOutHMapOut ApplyHConsHMap'HShowHSeq hStagedEq' HStagedEq'HNatsHSethFindHFindhFind'HFind'HMemberHMemberM HMemberM'HTMember hTIntersect HTIntersecthTIntersectBoolHTIntersectBool hList2List HList2ListtoHJustToHJust fromHJust FromHJustHAddTagHRmTaghSplitHSplitData.HList.FakePreludesubType typeEqFalse typeEqTrueunProxytoProxyproxyproxyEqtypeEqhLthEqhPredhSucchZerohFalsehTrueHTrueHFalseHBoolhAndHAndhOrHOrhCondHCondHZeroHSuccHNat hNat2Integral HNat2IntegralHNothingHJustHEq hStagedEq HStagedEqHLtTypeEqProxy TypeEqTrue TypeEqFalseSubTypeFail Data.MaybeNothingJust splitChunksNetworkmatrix num2switch switch2num