?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ '  Safe-InferedEWhen a switch encounters an error condition, it sends the controller ) a message containing the information in SwitchErrorRecord. ,,   Safe-Infered.Runs the Put writer with write position given 3 by the first pointer argument. Returns the number  of words written. MAllocates 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. $Write a Word32 in big endian format $Write a Word64 in big endian format   Safe-InferedPAn 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    Safe-Infered"-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 4#$%&'()*+     ,-./012 !"344#$%&'()*+     ,-./012 !"34 %$#&      +*)(',0/.-1 2 !"34 Safe-Infered56789:;<=>?@ABCDEFGHIJKLMNOP56789:;<=>?@ABCDEFGHIJKLMNOP56789:;<=>?@ABCDEFGHIJKLMNOP Safe-InferedQJThe 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. RhAn 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. S2differentiated services code point - 6 bit number T.An IP packet consists of a header and a body. (UVWXYZ[Q\]^_`abcdRefghijSTklmnopqrstuvwx(UVWXYZ[Q\]^_`abcdRefghijSTklmnopqrstuvwxUVWXYZ[Q_^]\`abcdRefghijSTklmnopqrstuvwx Safe-InferedyParser for ARP packets zParser for ARP packets {|}~yz{|}~yz{|}~yz Safe-InferedQEthernet 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 Parser for Ethernet frames. Parser for Ethernet headers. Unparser for Ethernet headers. #source hardware address source IP address target IP address source hardware address source IP address target hardware address target IP address #  Safe-InferedISequence 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. >>  Safe-Infered7The switch capabilities are denoted with these symbols can reassemble IP fragments "match IP addresses in ARP packets can provide queue statistics +supports the 802.1d spanning tree protocol can provide port statistics can provide table statistics can provide flow statistics <A unique identifier for a switch, also known as DataPathID. BThe 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 #description of each port on switch $Maximum number of ports on a switch      Safe-Infered XEach flow entry includes a match, which essentially defines packet-matching condition. " Fields that are left Nothing are  wildcards.  #A match that matches every packet.  Return True if given  $ 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.              Safe-Infered!The number of bytes in a packet.  :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. !>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. "buffer ID if packet buffered #full length of frame $!port on which frame was received %reason packet is being sent &:ethernet frame, includes full packet only if no buffer ID '$result of parsing packetData field. (0A 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. )@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. *&either a buffer ID or the data itself +Sthe port at which the packet received, for the purposes of processing this command ,actions to apply to the packet - Constructs a  PacketOut* value for a packet buffered at a switch. . Constructs a  PacketOut< value for an unbuffered packet, including the packet data. / Constructs a  PacketOut4 value that processes the packet referred to by the  PacketInfo value & according to the specified actions.  01!2"#$%&'()3*+,-./4 01!2"#$%&'()3*+,-./4  10!2"#$%&'()3*+,-./4 Safe-Infered5OWhen a switch removes a flow, it may send a message containing the information  in FlowRemovedRecord to the controller. 61Each flow entry has idle and hard timeout values  associated with it. 7wThe priority of a flow entry is a 16-bit integer. Flow entries with higher numeric priorities match before lower ones. -89:;5<=>?@ABCDE6FG7HIJKLMNOPQRSTUVWXYZ[\]^_`a-89:;5<=>?@ABCDE6FG7HIJKLMNOPQRSTUVWXYZ[\]^_`a8;:95 <=>?@ABCDE6GF7HI)WVNMKJXYZ[\]^_`XYZ[`XOPQRSTUXYOQRSTUXLXLYa Safe-Infered bTable ID of the flow cMatch condition of the flow dActions for the flow eEPriority of the flow entry (meaningful when the match is not exact). f!Cookie associated with the flow. gfields to match fields to match hID of table to read ID of table to read iGif present, require matching entries to include this as an output port Gif present, require matching entries to include this as an output port j,A port stats value with all fields missing. k:A port stats value with all fields present, but set to 0. lKLift a unary function and apply to every member of a PortStats record. mLLift a binary function and apply to every member of a PortStats record. Ynopqrstuvwxyz{|}~bcdefghijklmYnopqrstuvwxyz{|}~bcdefghijklmnopqrstu vwxyz{|}~ bcdefghighijklm Safe-Infered6The 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.    Safe-InferedOpenFlow message header  Parser for  SCMessages  Parser for  CSMessages  Unparser for  SCMessages AParser for the OpenFlow message header  Unparser for  CSMessages   Safe-Infered      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~#$%&'()*+     ,-./012 !"3456789:;<=>?@ABCDEFGHIJKLMNOPUVWXYZ[Q\]^_`abcdRefghijSTklmnopqrstuvwx      01!2"#$%&'()3*+,-./489:;5<=>?@ABCDE6FG7HIJKLMNOPQRSTUVWXYZ[\]^_`anopqrstuvwxyz{|}~bcdefghijklm Safe-Infered ;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. 6Returns the socket address of the switch connection. PBlocks until a message is received from the switch or the connection is closed.  Returns # only if the connection is closed. Send a message to the switch.  Close a switch connection. TRepeatedly 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.  Safe-InferedNAbstract type representing the state of the connection to the control server. >Established a connection to the control server with the given   and  and returns its .  Creates a 5 based on a handle to read from and one to write to. .Close client, closing read and write handles. VBlocks until a new control message arrives or the connection is terminated, in which  the return value is . +Sends a message to the controller.  Safe-Infered     None5A class for types that compose similar to wildcards. *All instances must satisfy the following:  match defines a partial order; top" is the top element of this order  and  intersect is a meet.  Meets are exact: if  match x y and  match x z, then  "match x (fromJust (intersect y z)), if such a meet exists. 0Minimal complete definition: top and intersect.        Safe-InferedLProduce a new channel that carries updates from both of the input channels, O but does not wait for both to be ready. Analogous to Unix SELECT(2) followed * by READ(2) on the ready file descriptor. MProduce a new channel that waits for both input channels to produce a value, M and then yields the latest version of both values. If one channel produces J multiple values before the other produces any, then the early values are J discarded. Afterwards, whenever one channel updates, the output channel I yields that update along with whatever the current version of the other  channel is.       ! Safe-Infered)=Policies denote functions from (switch, packet) to packets. (Performs the actions of both P1 and P2. CPerforms the given action on packets matching the given predicate. Performs no actions. Actions to perform on packets. /@For each fields with a value Just v, modify that field to be v. G If the field is Nothing then there is no modification of that field. :Predicates to match packets. ;0PrNegate P matches packets that do not match P. <Match both predicates. =Match either predicates. >Match only at this switch. ?Match with a simple pattern. @LPatterns to match packets. Patterns translate directly to a single OpenFlow  match rule. NPackets' headers. Psource ethernet address Qdestination ethernet address R0ethernet type code (e.g., 0x800 for IP packets) S VLAN tag TVLAN priority code U!source IP address for IP packets V&destination IP address for IP packets W.IP protocol number (e.g., 6 for TCP segments) X IP TOS field Ysource port for IP packets Z destination port for IP packets [0ingress port on the switch where the packet was  received \%Ethernet addresses are 48-bits wide. ],VLAN tags. Only the lower 12-bits are used. ^Logical ports. aa) uniquely identifies a port at a switch. cThe number of a physical port. dA switch's unique identifier. e)A predicate that exactly matches a packet' s headers. hMBuild a list of the non-wildcarded patterns with sep between field and value kGPeriodically polls the network to counts the number of bytes received.  Returns an  and a channel. When the  is used in the  active 8, the controller periodically reads the packet counters G on the network. The controller returns the number of matching packets  on each switch. l!Sends packets to the controller.  Returns an  and a channel. When the  is used in the active  A, all matching packets are sent to the controller. These packets  are written into the channel. nHGet back all predicates in the intersection. Does not return any naked  intersections. oIGet back all predicates in the union. Does not return any naked unions. pGGet back all basic policies in the union. Does not return any unions. q;Returns a predicate that matches the domain of the policy. r+Returns the approximate size of the policy a !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk"polling interval, in milliseconds l"polling interval, in milliseconds mnopqr"#$%&'()`  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrZdc]ab^`_\ !"%#&'()*+$&,.-/0123456789fiklmj@ABCDEFGHIJKLM:?>=<;eNOPQRSTUVWXYZ[hgnopqr$ !" %#&'()*+$&,.-/ 0123456789:?>=<;@ ABCDEFGHIJKLMN OPQRSTUVWXYZ[\]^`_abcdefghijklmnopqr"#$%&'() Safe-Infereds'FreneticImpl a'5 is a family of related abstract types that define a  back-end for Frenetic. u' PatternImpl a'4 represents switch-level patterns, which may not be  as expressive as Frenetic's pattern language.  patOverapprox and patUnderapprox must follow the laws in the @ Approx class. If the pattern is not a real underapproximation,  patUnderapprox must return Nothing. v' ActionImpl a'7 represents switch-level actions. All Frenetic actions  (Action%) may not be realizable on switches. w'ptrnMatchPkt pkt pat' is * if pat matches pkt. Data that was sent. stuvwxyz{|}~ NOPQRSTUVWXYZ[stuvwxyz{|}~ NOPQRSTUVWXYZ[stuvwxyz{|}~s tuvwxyz{|}~ Safe-InferedMatches all packets. Matches no packets. AConstruct the predicate matching packets on this switch and port /Construct the set difference between p1 and p2 -Construct nary union of a list of predicates 4Construct nary intersection of a list of predicates ?Forward the packet out of all physical ports, except the packet's  ingress port. 8Forward the packet out of the specified physical ports. KForward the packet out of the specified physical ports with modifications. LEach port has its own record of modifications, so modifications at one port 6 do not interfere with modifications at another port. Match switch identifier. HJoin: overloaded to find the union of policies and the join of actions. "Abbreviation for predicate union. )Abbreviation for predicate intersection. %Abbreviation for predicate negation. MAbbreviation for constructing a basic policy from a predicate and an action. >Restrict a policy to act over packets matching the predicate. Match ethernet source address. $Match ethernet destination address. 8Match ethernet type code (e.g., 0x0800 for IP packets). Match VLAN tag. Match Vlan untagged Match VLAN priority Match source IP address. ,This is only meaningful in combination with ' dlTyp 0x0800'. Match destination IP address. )Match a prefix of the source IP address. .Match a prefix of the destination IP address. ;Match IP protocol code (e.g., 0x6 indicates TCP segments). Match IP TOS field. Match IP source port. Match IP destination port. 0Match the ingress port on which packets arrive. +*modifications to apply to the packet. Use  'allPorts unmodified' to make no modifications. +,5/0123456789f5/0123456789f++, Safe-Infered EBuild a graph from list of undirected edges labeled with their ports L Ensures that the resulting graph is undirected-equivalent, and labels each  directed@ edge with the appropriate port to send a packet over that edge  from the source switch. LBy convention, hosts have a single port 0, and non-hosts have any number of K non-zero ports. If 0 is in the ports of a node, it is considered to be a 5 host regardless of other ports that may be present. -'Get the subgraph only containing nodes ..Maybe get the label of the edge from n1 to n2 /=Get the normalized pair of locations that one location is on 0$Maybe get the reverse of a location 1CGet the switches of a topology. A switch is a node with no port 0 2FGet the hosts of a topology. A host is a node with only one port, 0. 31Get the (dest, port) of a switch in the topology 4+Get the ports of a switch in the topology. -./015234 -./015234 -./015234 Safe-Infered6*Pretty-print a netcore policy to a String 7(Pretty-print a netcore policy to stdout 8*Pretty-print a netcore policy to a handle 679867986798  Safe-Infered KA slice represents a subgraph of the network for the purposes of isolating  programs from each other. MThe interface to a slice has two components: a topology comprising switches, O ports, and links; and a collection of predicates, one for each outward-facing  edge port. KWe represent the topology as a collection of locations in the network, and ; the predicates as a mapping from locations to predicates. LIntuitively, packets may travel freely between internal locations, but must M satisfy the associated predicate to enter the slice at an ingress location, N or leave the slice at an egress location. If an external port is not listed B in the ingress or egress set, then no packets may enter or leave  (respectively) on that port. Ports internal to the slice. 5External ports, and restrictions on inbound packets. 6External ports, and restrictions on outbound packets. KProduce a slice that exactly covers the given topology, with no ingress or  egress ports. LProduce a slice with all the switches in topo, and predicate applied to all ( in- and out-bound connections to hosts :MTransform policy running on slice into a FLOOD- and unbound port-free (i.e., K every port has an unambiguous switch associated with it) version with the N same semantics, assuming it runs on the subgraph described by the slice. In L the returned policy, all forwarding actions within the slice, or to one of  its egress ports. ;MStarting with a set of switches, get the switches the predicate might match. <9Determine if a policy ever matches on or sets VLAN tags. :;<= :;<=:;<=! Safe-Infered>?>?>? Safe-Infered3Implements the denotation function for predicates. 1Implements the denotation function for policies. @ABCDE@A  Safe-Infered" Safe-InferedF6Each rule of the intermediate form is called a Bone. G,Classifiers are the target of compilation. H+Compile a predicate to intermediate form. I#Compile a policy to a classifier. FJGKLHIFJGKLHIFJGKLHI# Safe-InferedMNOPQRStarget switch related messages  callback TUVWXYZ[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~#$%&'()*+     ,-./012 !"3456789:;<=>?@ABCDEFGHIKLMNOPUVWXYZ[Q\]^_`abcdRefghijSTklmnopqrstuvwx      01!2"#$%&'()3*+,-./489:;5<=>?@ABCDE6FG7HIJKLMNOPQRSTUVWXYZ[\]^_`anopqrstuvwxyz{|}~bcdefghijklmMNOPQRSTUVWXYZ[MNOPQRSTUVWXYZ[$ Safe-Infered\1Convert a pattern Prefix to an IPAddressPrefix. ]1Convert an IPAddressPrefix to a pattern Prefix. ^_\]`abcdefghij M^_kl\]`abcd^_\]`abcdefghij% Safe-Inferedm7Installs the static portion of the policy, then react. nopqmrstu nopqmrstu nopqmrstu  Safe-InferedBStarts an OpenFlow controller that runs dynamic NetCore programs. CThe controller reads NetCore programs from the given channel. When F the controller receives a program on the channel, it compiles it and % reconfigures the network to run it. BStarts an OpenFlow controller that runs a static NetCore program. packets to emit & Safe-Inferedv=Reduce the policy to produce a smaller, more readable policy vvv' Safe-Infered>Compile a list of slices and dynamic policies as they change. LProduce the combined policy by compiling a list of slices and policies with  the vanilla compiler LProduce the combined policy by compiling a list of slices and policies with  the edge compiler w Compile a slice with a vlan key xLCompile a slice with an assignment of VLAN tags to ports. For this to work K properly, the assignment of tags to both ends of an edge must be the same yIWalk through the policy and globally set VLAN to vlan at each forwarding  action zKSet vlan tag for packets forwarded to location (without link transfer) and K leave rest of policy unchanged. Note that this assumes that each PoBasic  matches at most one switch. {MDetermine if a predicate can match any packets on a switch (overapproximate) wxyz{wxyz{wxyz{ Safe-Infered[ /:NOPQRSTUVWXYZ[\]abcdefklm[:elkm/fdc]ab\ NOPQRSTUVWXYZ[|()*+,-./0.1234566789:;<<==>?@ABCDEFGHIJKLLMNOPQRSTUVWXYZ[\\]^_`abcdefghijkllmnopqrstuvwxyyz{|}~    '''                                                       6 ;    8   ! " # 9$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXXYZ[\]^_`abcdefghiAjDklmnopqrstuvwxyz{|}~pL       !"#$%&'()*+,-./0123456789:;<=>?@ABC3DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghBijklmnopqrstuvwxyz{|}~~&Z;F%((((((((((((((((((((((((((((((((( ( ( ( ( ((((((((((((((((((( !( "(#$(%&('((')('*('+(,-(,.(,/(,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(QR(QS(QT(UV(WX(WY(WZ([\( ]^_`^_a^bc^bd^be^bf^bg^bh^bi^bj^bk^bl^bm^bn^op^oq^or^os^ot^ou^ov^ow^ox^oy^oz^o{^o|^o}^o~^o^o^o^o^o^o^o^o^o^o^o^o^o^o^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ^ ^ ^ ^^^^^^^^^^^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-^.^.^/^/^0^1^2^3^4^5^6^7^8^9^:^;^<^=^>^?^@^A^B^C^C^D^E^F^G^H^I^J^J^K^K^L^L^M^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^d^e^e^f^g^hi^hj^hk^hl^hm^hn^ho^hp^hq^hr^hs^ht^hu^hv^hw^hx^hy^hz^h{^h|^h}^h~^h^h^h^h^h^h^h^h^h^h^h^h^h^h^h^h^h^h^h^h^h()()S((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ( ( ( ( (((( !"#$%&'()*+,+-+.+/+0+1+2+3456789:;<=>?@ABCDEFGHIJK L M N O!P!QRSTUVW"X"Y"Z"["X"\"]#^#_#####`#a#b#c#d#e#f#g#h$i$j$k$k$l$m$n$o$p$q$r$S$s$t$u$v$w%x%y%z%{%|%}%~%%&''''' netcore-1.0.0Frenetic.CommonFrenetic.EthernetAddressFrenetic.PatternFrenetic.NetCore.TypesFrenetic.CompatFrenetic.NetCore.ShortFrenetic.NetCoreFrenetic.NetCore.SemanticsFrenetic.NetworkFramesFrenetic.ServerNettle.OpenFlow.ErrorNettle.OpenFlow.StrictPutNettle.Ethernet.EthernetAddressNettle.OpenFlow.PortNettle.IPv4.IPAddressNettle.IPv4.IPPacket)Nettle.Ethernet.AddressResolutionProtocolNettle.Ethernet.EthernetFrameNettle.OpenFlow.ActionNettle.OpenFlow.SwitchNettle.OpenFlow.MatchNettle.OpenFlow.PacketNettle.OpenFlow.FlowTableNettle.OpenFlow.StatisticsNettle.OpenFlow.MessagesNettle.OpenFlow.MessagesBinaryNettle.OpenFlowNettle.Servers.ServerNettle.Servers.Client Frenetic.TopoFrenetic.NetCore.PrettyFrenetic.Slices.SliceFrenetic.Slices.VlanAssignmentFrenetic.NetCore.CompilerFrenetic.NettleExFrenetic.Switches.OpenFlowFrenetic.Hosts.NettleFrenetic.NetCore.ReduceFrenetic.Slices.Compilebase Data.Maybe catMaybesbytestring-0.9.2.1Data.ByteString.Lazy.Internal ByteStringcontainers-0.4.2.1Data.MapMapData.SetSetmultiset-0.2.1 Data.MultiSetMultiSetEthernetAddress unpackEth64ethernetAddressbroadcastAddressunpackEthernetAddressethernetAddress64PrefixWildcardExact Matchabletop intersectmatchoverlapdisjointwMatchselectbothPolicyPoUnionPoBasicPoBottomActionactionForwards actionQueriesQueryPktQuery pktQueryChan NumPktQuery idOfQuerynumPktQueryChan queryInterval countFieldtotalVallastValCounter CountBytes CountPackets Modification modifyDlSrc modifyDlDst modifyDlVlanmodifyDlVlanPcp modifyNwSrc modifyNwDst modifyNwTos modifyTpSrc modifyTpDst PredicatePrNegate PrIntersectPrUnionPrTo PrPatternPattern ptrnDlSrc ptrnDlDst ptrnDlTyp ptrnDlVlan ptrnDlVlanPcp ptrnNwSrc ptrnNwDst ptrnNwProto ptrnNwTos ptrnTpSrc ptrnTpDst ptrnInPortPacketpktDlSrcpktDlDstpktDlTyp pktDlVlan pktDlVlanPcppktNwSrcpktNwDst pktNwProtopktNwTospktTpSrcpktTpDst pktInPortWord48Vlan PseudoPortAllPortsPhysicalLocPortSwitch exactMatch unmodifiedmodifiedFields interesting isPktQueryactionForwardsTo countPkts countBytesgetPkts prUnIntersect prUnUnion poUnUnionpoDomsize FreneticImpl PacketImpl PatternImpl ActionImpl ptrnMatchPkttoPacket updatePacket fromPattern toPattern actnDefaultactnController actnTranslateactnControllerPart Transmission trPatterntrSwitchtrPktmatchAll matchNoneinport prSubtractprOrprAnddropPktallPortsforwardmodifyonSwitch<+><||><&&>neg==><%>dlSrcdlDstdlTypdlVlandlNoVlan dlVlanPcpnwSrcnwDst nwSrcPrefix nwDstPrefixnwProtonwTostpSrctpDstinPortmodDlSrcmodDlDst modDlVlan modDlVlanPcpmodNwSrcmodNwDstmodNwTosmodTpSrcmodTpDstTopo buildGraphSliceinternalingressegress internalSlice simpleSliceinterpretPredicateinterpretPolicyarpReply dynController controller dynTransform transform transformEdge SwitchError QueueOpErrorQueueOpPermissionsErrorQueueDoesNotExistQueueOpBadPort PortModErrorBadHardwareAddressBadPort FlowModErrorUnsupportedActionList BadCommandEmergencyModHasTimeoutsFlowModPermissionsErrorOverlappingFlow TablesFull ActionError InvalidQueueTooManyActionsActionPermissionsErrorBadActionArgument BadOutPortUnknownActionTypeForVendorUnknownVendorIDBadActionLengthUnknownActionType RequestError UnknownBuffer BufferEmptyBadRequestLengthRequestPermissionsErrorVendorSubtypeNotSupportedVendorNotSupportedStatsRequestTypeNotSupportedMessageTypeNotSupportedVersionNotSupported HelloFailureHelloPermissionsErrorIncompatibleVersionsQueueOperationFailed PortModFailed FlowModFailed BadAction BadRequest HelloFailedrunPutrunPutToByteString putWord32be putWord64bePutPutMputWord8 putWord16be putByteString $fMonadPutMgetEthernetAddressputEthernetAddressputEthernetAddress2 pack_32_16unpackunpack64getEthernetAddress2 isReservedPortStatusUpdateReason PortStatusPortMod portNumberhwAddrattributesToSet PortFeatures PortFeature Rate10GbFD Rate1GbFD Rate1GbHD Rate100MbFD Rate100MbHD Rate10MbFD Rate10MbHDPortConfigAttribute NoPacketInMsg DropForwarded NoFlooding NoSTPackets OnlySTPackets STPDisabledPortDownportIDportName portAddress portConfig portLinkDown portSTPStateportCurrentFeaturesportAdvertisedFeaturesportSupportedFeaturesportPeerFeatures PortModified PortDeleted PortAdded PortModRecordAsymmetricPausePauseAutoNegotiationFiberCopperSpanningTreePortState STPBlocking STPForwarding STPLearning STPListeningPortIDportAttributeOnportAttributeOff PrefixLengthIPAddressPrefix IPAddressipAddressToWord32 ipAddress getIPAddress getIPAddress2 putIPAddress// addressPart prefixLength maxPrefixLen prefixIsExactdefaultIPPrefixaddressToOctets showOctets showPrefix prefixPlusprefixOverlaps elemOfPrefix intersects disjointsisSubsetparseIPAddressipAddressParserIPBodyIPHeaderdscpIPPacket UDPPortNumber UDPHeader TCPPortNumber TCPHeaderICMPCodeICMPType ICMPHeaderUninterpretedIPBodyICMPInIPUDPInIPTCPInIP TransportPortIPTypeOfService IPProtocol FragOffsetDifferentiatedServicesCodePoint ipSrcAddress ipDstAddress ipProtocol headerLength totalLength ipTypeTcp ipTypeUdp ipTypeIcmp foldIPPacket foldIPBody fromTCPPacket fromUDPPacket withIPPacket getIPHeader getIPPacket getIPPacket2 getICMPHeader getTCPHeader getUDPHeader getARPPacket getARPPacket2ARPReplyPacketreplySenderEthernetAddressreplySenderIPAddressreplyTargetEthernetAddressreplyTargetIPAddressARPQueryPacketquerySenderEthernetAddressquerySenderIPAddressqueryTargetIPAddress ARPPacketARPReplyARPQuery putARPPacketEthernetTypeCode EthernetFramegetEthernetFrame getEthHeader2 putEthHeaderVLANID VLANPriorityEthernetHeader Ethernet8021QpriorityCodePointcanonicalFormatIndicatorvlanIddestMACAddresssourceMACAddresstypeCode EthernetBodyUninterpretedEthernetBody ARPInEthernet IPInEthernetfoldEthernetFramefoldEthernetBody eth_ip_packeteth_ip_tcp_packeteth_ip_udp_packetarpQuerygetEthernetFrame2 getEthHeader putEthFrame ethTypeIP ethTypeARP ethTypeLLDP ethTypeVLANtypeEth2CutoffActionSequenceMaxLenToSendController WithTableNormalSwitching ToControllerAllPhysicalPortsFloodInPort PhysicalPortEnqueue enqueuePortqueueIDSetTransportDstPortSetTransportSrcPortSetIPToS SetIPDstAddr SetIPSrcAddr SetEthDstAddr SetEthSrcAddrStripVlanHeaderSetVlanPriority SetVlanVID SendOutPort ActionTypeQueueIDVendorID VendorActionVendorActionType EnqueueTypeSetTransportDstPortTypeSetTransportSrcPortTypeSetIPTypeOfServiceTypeSetIPDstAddrTypeSetIPSrcAddrTypeSetEthDstAddrTypeSetEthSrcAddrTypeStripVlanHeaderTypeSetVlanPriorityTypeSetVlanVIDTypeOutputToPortType sendOnPort sendOnInPortflooddropallPhysicalPortsprocessNormallyprocessWithTablesendToController setVlanVIDsetVlanPrioritystripVlanHeader setEthSrcAddr setEthDstAddr setIPSrcAddr setIPDstAddrsetIPToSsetTransportSrcPortsetTransportDstPortenqueue vendorActionSwitchCapabilityCanReassembleIPFragmentsCanMatchIPAddressesInARPPacketsHasQueueStatistics SpanningTree HasPortStats HasTableStats HasFlowStatsSwitchIDSwitchFeaturesswitchIDpacketBufferSizenumberFlowTables capabilitiessupportedActionsportsmaxNumberPorts QueueRateEnabledDisabled QueueProperty MinRateQueue QueueLength QueueConfigQueueConfigReplyPortQueueConfigQueueConfigRequest)MayTransmitOverMultiplePhysicalInterfacesMatchmatchAny isExactMatch getExactMatchmatches srcEthAddress dstEthAddressvLANID vLANPriority ethFrameTypeipTypeOfServicematchIPProtocol srcIPAddress dstIPAddresssrcTransportPortdstTransportPort ofpVlanNoneframeToExactMatchframeToExactMatchNoPortNumBytesPacketInReason PacketInfobufferID packetLengthreceivedOnPort reasonSent packetData enclosedFrameBufferID PacketOut bufferIDData packetInPort packetActionsbufferedPacketOutunbufferedPacketOutreceivedPacketOut ExplicitSend NotMatchedPacketOutRecordbufferedAtSwitch FlowRemovedTimeOutPriorityFlowRemovalReasonDeletedByControllerHardTimerExpiredIdleTimerExpiredFlowRemovedRecordflowRemovedMatchflowRemovedCookieflowRemovedPriorityflowRemovedReasonflowRemovedDurationflowRemovedDurationNSecsflowRemovedIdleTimeoutflowRemovedPacketCountflowRemovedByteCount ExpireAfter PermanentCookieFlowModDeleteExactFlow DeleteFlowsoutPortModifyExactFlow ModifyFlows newActionsifMissingPriorityifMissingCookieifMissingIdleTimeOutifMissingHardTimeOutifMissingNotifyWhenRemovedifMissingOverlapAllowedAddEmergencyFlowAddFlowpriorityactionscookie idleTimeOut hardTimeOutnotifyWhenRemoved applyToPacketoverlapAllowed FlowTableIDflowStatsTableIDflowStatsMatchflowStatsActionsflowStatsPriorityflowStatsCookiestatsRequestMatchstatsRequestTableIDstatsRequestPort nullPortStats zeroPortStatsliftIntoPortStats1liftIntoPortStats2 QueueStatsqueueStatsPortIDqueueStatsQueueIDqueueStatsTransmittedBytesqueueStatsTransmittedPacketsqueueStatsTransmittedErrors PortStatsportStatsReceivedPacketsportStatsSentPacketsportStatsReceivedBytesportStatsSentBytesportStatsReceiverDroppedportStatsSenderDroppedportStatsReceiveErrorsportStatsTransmitErrorportStatsReceivedFrameErrorsportStatsReceiverOverrunErrorportStatsReceiverCRCErrorportStatsCollisions TableStatstableStatsTableIDtableStatsTableNametableStatsMaxEntriestableStatsActiveCounttableStatsLookupCounttableStatsMatchedCount FlowStatsflowStatsDurationSecondsflowStatsDurationNanosecondsflowStatsIdleTimeoutflowStatsHardTimeoutflowStatsPacketCountflowStatsByteCountAggregateFlowStatsaggregateFlowStatsPacketCountaggregateFlowStatsByteCountaggregateFlowStatsFlowCount DescriptionmanufacturerDesc hardwareDesc softwareDesc serialNumber datapathDescMoreToFollowFlag StatsReplyQueueStatsReplyPortStatsReplyTableStatsReplyAggregateFlowStatsReplyFlowStatsReplyDescriptionReply TableQueryTableEmergencyTable AllTables QueueQuery SingleQueue AllQueues PortQuery SinglePort StatsRequestQueueStatsRequestqueueStatsPortqueueStatsQueryPortStatsRequestportStatsQueryDescriptionRequestTableStatsRequestAggregateFlowStatsRequestFlowStatsRequest CSMessageBarrierRequestFeaturesRequest CSEchoReply CSEchoRequestCSHello SCMessage BarrierReplyErrorPacketInFeatures SCEchoReply SCEchoRequestSCHello TransactionIDGetQueueConfigVendor SetConfig OFPHeader getSCMessage getCSMessage putSCMessage getHeader putCSMessage msgVersionmsgType msgLengthmsgTransactionIDgetSCMessageBodygetCSMessageBodyGHC.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 writeIOReftypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1 tyConPackage tyConModule tyConNamemkFunTy 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.3 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 HTypeProxiedData.HList.TIPoneTruetuple tipySplit tipyProject tipyUpdate tipyDeleteonTIPhExtend'emptyTIPunTIPmkTIPTIP HTypeIndexedData.HList.HTypeIndexedhSplitByProxieshProjectByProxies hUpdateAtTypehDeleteAtProxy hType2HNathDeleteManyCaseHDeleteManyCase HType2HNatHType2HNatCase hTypes2HNats HTypes2HNatsData.HList.HOccurs hOccursMany HOccursMany hOccursMany1 HOccursMany1 hOccursFst HOccursFsthOccursHOccurs TypeNotFoundhOccurs'HOccurs' hOccursBool HOccursBool hOccursOpt HOccursOpt TypeFound HOccursNothProjectHProjectData.HList.HArrayhSinglehLength hSplitByHNats 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 SwitchHandleOpenFlowServerstartOpenFlowServerNothingJustnetwork-2.3.0.14Network.SocketHostName closeServer acceptSwitchswitchSockAddrreceiveFromSwitch sendToSwitchcloseSwitchHandle untilNothingServerPortNumber receiveBatch sendBatch sendBatchessendToSwitchWithIDhandle2SwitchID ClientHandleconnectToControllerNetworkconnectToHandles closeClientreceiveControlMessage sendMessage flushClient$fBinaryEthernetAddress$fEnumEthernetAddress$fShowEthernetAddress$fMatchableWildcard$fMatchablePrefix $fShowPrefix$fFunctorWildcard$fShowWildcardControl.ConcurrentthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSnmergeIOmergeIOrtsSupportsBoundThreadsControl.Concurrent.SampleVarisEmptySampleVarwriteSampleVar readSampleVaremptySampleVar newSampleVarnewEmptySampleVar SampleVarControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChan GHC.Conc.IO threadDelayControl.Concurrent.MVar modifyMVar modifyMVar_withMVarswapMVarreadMVar GHC.Conc.SyncthreadCapabilityyield myThreadIdthrowTo killThreadgetNumCapabilitiesforkOnWithUnmaskforkOnforkIOWithUnmaskforkIOUnmaskedforkIOThreadId Data.Monoid<>mconcatmappendmemptyMonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastGHC.MVaraddMVarFinalizer isEmptyMVar tryPutMVar tryTakeMVarputMVartakeMVarnewMVar newEmptyMVarMVarhslogger-1.2.0System.Log.Logger traploggingremoveAllHandlersupdateGlobalLoggersaveGlobalLogger clearLevelsetLevelgetLevel setHandlers addHandlerlogL getRootLogger getLogger emergencyMalertM criticalMerrorMwarningMnoticeMinfoMdebugMlogMrootLoggerNameLogger System.LogDEBUGINFONOTICEWARNINGERRORCRITICALALERT EMERGENCY $fShowPolicy $fShowQuery $fShowAction $fOrdQuery$fMatchablePredicate$fShowPredicate $fShowPattern$fMatchablePattern GHC.TypesTrue$fMonoidPolicy$fMonoidActionsubgraph getEdgeLabelgetEdge reverseLocswitcheshostslPortsisHosttoString putNetCore hPutNetCore putNetCoreLnlocalizeswitchesOfPredicate poUsesVlans actUsesVlans sequentialedge$fFreneticImpl()$fMatchablePatternImpl FreneticPkt FreneticPat FreneticActfromFreneticActBone ClassifiercompilePredicatecompileclassifyminimizeClassifierNettlestartOpenFlowServerExsendTransaction ethVLANId ethVLANPcpethSrcIPethDstIPethProtoethTOSsrcPortdstPortprefixToIPAddressPrefixipAddressPrefixToPrefixOpenFlowtoOFPkt fromOFPkttoOFPat fromOFPattoOFAct$fFreneticImplOpenFlow$fShowActionImpl$fMatchableMatch$fMatchableMaybe$fMatchable(,) fromOFAct actQueries handleSwitch mkFlowMod rawClassifier showMatchprettyClassifier nettleServerclassifierQueriesrunQueryOnSwitchgetCountreduce compileSliceedgeCompileSlice modifyVlansetVlan matchesSwitch