@@ -2,7 +2,6 @@ module AL = SDN_Types
2
2
module Core = OpenFlow0x01_Core
3
3
module Msg = OpenFlow0x01. Message
4
4
5
-
6
5
exception Invalid_port of int32
7
6
8
7
let from_portId (pport_id : AL.portId ) : Core.portId =
@@ -48,13 +47,23 @@ let from_pattern (pat : AL.Pattern.t) : Core.pattern =
48
47
| None -> None )
49
48
; Core. dlVlanPcp = pat.AL.Pattern. dlVlanPcp
50
49
; Core. nwSrc = (match pat.AL.Pattern. nwSrc with
51
- | None -> None
52
- | Some (p ,m ) -> let mo = if m = 32l then None else Some m in
53
- Some { Core. m_value = p; Core. m_mask = mo })
50
+ | None -> None
51
+ | Some (p ,m ) ->
52
+ let mo =
53
+ if m = 32l then
54
+ None
55
+ else
56
+ Some (Int32. sub 32l m) in
57
+ Some { Core. m_value = p; Core. m_mask = mo })
54
58
; Core. nwDst = (match pat.AL.Pattern. nwDst with
55
- | None -> None
56
- | Some (p ,m ) -> let mo = if m = 32l then None else Some m in
57
- Some { Core. m_value = p; Core. m_mask = mo })
59
+ | None -> None
60
+ | Some (p ,m ) ->
61
+ let mo =
62
+ if m = 32l then
63
+ None
64
+ else
65
+ Some (Int32. sub 32l m) in
66
+ Some { Core. m_value = p; Core. m_mask = mo })
58
67
; Core. nwProto = pat.AL.Pattern. nwProto
59
68
; Core. nwTos = None
60
69
; Core. tpSrc = pat.AL.Pattern. tpSrc
@@ -82,11 +91,11 @@ module Common = HighLevelSwitch_common.Make (struct
82
91
| AL. All ->
83
92
(Mod. none, Output AllPorts )
84
93
| AL. Physical pport_id ->
85
- let pport_id = from_portId pport_id in
86
- if Some pport_id = inPort then
87
- (Mod. none, Output InPort )
88
- else
89
- (Mod. none, Output (PhysicalPort pport_id))
94
+ let pport_id = from_portId pport_id in
95
+ if Some pport_id = inPort then
96
+ (Mod. none, Output InPort )
97
+ else
98
+ (Mod. none, Output (PhysicalPort pport_id))
90
99
| AL. Controller n ->
91
100
(Mod. none, Output (Controller n))
92
101
| AL. Local ->
@@ -119,30 +128,34 @@ module Common = HighLevelSwitch_common.Make (struct
119
128
end
120
129
| AL. Modify (AL. SetVlanPcp pcp ) ->
121
130
(Mod. dlVlanPcp, SetDlVlanPcp (VInt. (get_int4 (Int4 pcp))))
122
- | AL. Modify (AL. SetEthTyp _ ) -> raise (Invalid_argument " cannot set Ethernet type" )
123
- | AL. Modify (AL. SetIPProto _ ) -> raise (Invalid_argument " cannot set IP protocol" )
131
+ | AL. Modify (AL. SetEthTyp _ ) ->
132
+ raise (Invalid_argument " cannot set Ethernet type" )
133
+ | AL. Modify (AL. SetIPProto _ ) ->
134
+ raise (Invalid_argument " cannot set IP protocol" )
124
135
| AL. Modify (AL. SetIP4Src nwAddr ) ->
125
136
(Mod. nwSrc, SetNwSrc nwAddr)
126
137
| AL. Modify (AL. SetIP4Dst nwAddr ) ->
127
138
(Mod. nwDst, SetNwDst nwAddr)
128
139
| AL. Modify (AL. SetTCPSrcPort tp ) ->
129
- (Mod. tpSrc, SetTpSrc VInt. (get_int16 (Int16 tp)))
140
+ (Mod. tpSrc, SetTpSrc VInt. (get_int16 (Int16 tp)))
130
141
| AL. Modify (AL. SetTCPDstPort tp ) ->
131
142
(Mod. tpDst, SetTpDst VInt. (get_int16 (Int16 tp)))
132
143
end )
133
144
134
- let from_group (inPort : Core.portId option ) (group : AL.group ) : Core.action list =
145
+ let from_group (inPort : Core.portId option ) (group : AL.group )
146
+ : Core.action list =
135
147
match group with
136
148
| [] -> []
137
149
| [par] -> Common. flatten_par inPort par
138
- | _ -> raise (SDN_Types. Unsupported " OpenFlow 1.0 does not support fast-failover" )
150
+ | _ ->
151
+ raise (SDN_Types. Unsupported " OpenFlow 1.0 does not support fast-failover" )
139
152
140
153
let from_timeout (timeout : AL.timeout ) : Core.timeout =
141
154
match timeout with
142
155
| AL. Permanent -> Core. Permanent
143
156
| AL. ExpiresAfter n -> Core. ExpiresAfter n
144
157
145
- let from_flow (priority : int ) (flow : AL.flow ) : Core.flowMod =
158
+ let from_flow (priority : int ) (flow : AL.flow ) : Core.flowMod =
146
159
let open AL in
147
160
match flow with
148
161
| { pattern; action; cookie; idle_timeout; hard_timeout } ->
0 commit comments