github.com/aporeto-inc/trireme-lib@v10.358.0+incompatible/utils/frontman/driver_windows_test.go (about) 1 // +build windows,ignore 2 3 package frontman 4 5 // TODO(windows): these tests need to be moved to integration tests when possible 6 7 import ( 8 "testing" 9 "unsafe" 10 11 . "github.com/smartystreets/goconvey/convey" 12 ) 13 14 func TestFrontmanStructLayout(t *testing.T) { 15 16 Convey("Given a Frontman PDB", t, func() { 17 18 pdb, err := abi.FindFrontmanPdb() 19 So(err, ShouldBeNil) 20 21 Convey("The layout of DestInfo and DEST_INFO should be the same", func() { 22 layout, err := pdb.GetStructLayout("_DEST_INFO") 23 So(err, ShouldBeNil) 24 So(unsafe.Sizeof(DestInfo{}), ShouldEqual, layout.Size) 25 // WCHAR* IPAddress 26 index := 0 27 So("IPAddress", ShouldEqual, layout.Members[index].Name) 28 So(unsafe.Offsetof(DestInfo{}.IpAddr), ShouldEqual, layout.Members[index].Offset) 29 // USHORT Port 30 index++ 31 So("Port", ShouldEqual, layout.Members[index].Name) 32 So(unsafe.Offsetof(DestInfo{}.Port), ShouldEqual, layout.Members[index].Offset) 33 // INT32 Outbound 34 index++ 35 So("Outbound", ShouldEqual, layout.Members[index].Name) 36 So(unsafe.Offsetof(DestInfo{}.Outbound), ShouldEqual, layout.Members[index].Offset) 37 // UINT64 ProcessId 38 index++ 39 So("ProcessId", ShouldEqual, layout.Members[index].Name) 40 So(unsafe.Offsetof(DestInfo{}.ProcessId), ShouldEqual, layout.Members[index].Offset) 41 // LPVOID DestHandle 42 index++ 43 So("DestHandle", ShouldEqual, layout.Members[index].Name) 44 So(unsafe.Offsetof(DestInfo{}.DestHandle), ShouldEqual, layout.Members[index].Offset) 45 }) 46 47 Convey("The layout of PacketInfo and FRONTMAN_PACKET_INFO should be the same", func() { 48 layout, err := pdb.GetStructLayout("FRONTMAN_PACKET_INFO") 49 So(err, ShouldBeNil) 50 So(unsafe.Sizeof(PacketInfo{}), ShouldEqual, layout.Size) 51 // UINT8 Ipv4 52 index := 0 53 So("Ipv4", ShouldEqual, layout.Members[index].Name) 54 So(unsafe.Offsetof(PacketInfo{}.Ipv4), ShouldEqual, layout.Members[index].Offset) 55 // UINT8 Protocol 56 index++ 57 So("Protocol", ShouldEqual, layout.Members[index].Name) 58 So(unsafe.Offsetof(PacketInfo{}.Protocol), ShouldEqual, layout.Members[index].Offset) 59 // UINT8 Outbound 60 index++ 61 So("Outbound", ShouldEqual, layout.Members[index].Name) 62 So(unsafe.Offsetof(PacketInfo{}.Outbound), ShouldEqual, layout.Members[index].Offset) 63 // UINT8 Drop 64 index++ 65 So("Drop", ShouldEqual, layout.Members[index].Name) 66 So(unsafe.Offsetof(PacketInfo{}.Drop), ShouldEqual, layout.Members[index].Offset) 67 // UINT8 IngoreFlow [sic] 68 index++ 69 So("IngoreFlow", ShouldEqual, layout.Members[index].Name) 70 So(unsafe.Offsetof(PacketInfo{}.IgnoreFlow), ShouldEqual, layout.Members[index].Offset) 71 // skip reserved 72 index += 3 73 // UINT16 LocalPort 74 index++ 75 So("LocalPort", ShouldEqual, layout.Members[index].Name) 76 So(unsafe.Offsetof(PacketInfo{}.LocalPort), ShouldEqual, layout.Members[index].Offset) 77 // UINT16 RemotePort 78 index++ 79 So("RemotePort", ShouldEqual, layout.Members[index].Name) 80 So(unsafe.Offsetof(PacketInfo{}.RemotePort), ShouldEqual, layout.Members[index].Offset) 81 // UINT32 LocalAddr[4] 82 index++ 83 So("LocalAddr", ShouldEqual, layout.Members[index].Name) 84 So(unsafe.Offsetof(PacketInfo{}.LocalAddr), ShouldEqual, layout.Members[index].Offset) 85 // UINT32 RemoteAddr[4] 86 index++ 87 So("RemoteAddr", ShouldEqual, layout.Members[index].Name) 88 So(unsafe.Offsetof(PacketInfo{}.RemoteAddr), ShouldEqual, layout.Members[index].Offset) 89 // UINT32 IfIdx 90 index++ 91 So("IfIdx", ShouldEqual, layout.Members[index].Name) 92 So(unsafe.Offsetof(PacketInfo{}.IfIdx), ShouldEqual, layout.Members[index].Offset) 93 // UINT32 SubIfIdx 94 index++ 95 So("SubIfIdx", ShouldEqual, layout.Members[index].Name) 96 So(unsafe.Offsetof(PacketInfo{}.SubIfIdx), ShouldEqual, layout.Members[index].Offset) 97 // UINT32 PacketSize 98 index++ 99 So("PacketSize", ShouldEqual, layout.Members[index].Name) 100 So(unsafe.Offsetof(PacketInfo{}.PacketSize), ShouldEqual, layout.Members[index].Offset) 101 // UINT32 Mark 102 index++ 103 So("Mark", ShouldEqual, layout.Members[index].Name) 104 So(unsafe.Offsetof(PacketInfo{}.Mark), ShouldEqual, layout.Members[index].Offset) 105 // UINT64 StartTimeReceivedFromNetwork 106 index++ 107 So("StartTimeReceivedFromNetwork", ShouldEqual, layout.Members[index].Name) 108 So(unsafe.Offsetof(PacketInfo{}.StartTimeReceivedFromNetwork), ShouldEqual, layout.Members[index].Offset) 109 // UINT64 StartTimeSentToUserLand 110 index++ 111 So("StartTimeSentToUserLand", ShouldEqual, layout.Members[index].Name) 112 So(unsafe.Offsetof(PacketInfo{}.StartTimeSentToUserLand), ShouldEqual, layout.Members[index].Offset) 113 }) 114 115 Convey("The layout of RuleSpec and RULE_SPEC should be the same", func() { 116 layout, err := pdb.GetStructLayout("RULE_SPEC") 117 So(err, ShouldBeNil) 118 So(unsafe.Sizeof(RuleSpec{}), ShouldEqual, layout.Size) 119 // UINT8 Action 120 index := 0 121 So("Action", ShouldEqual, layout.Members[index].Name) 122 So(unsafe.Offsetof(RuleSpec{}.Action), ShouldEqual, layout.Members[index].Offset) 123 // UINT8 Log 124 index++ 125 So("Log", ShouldEqual, layout.Members[index].Name) 126 So(unsafe.Offsetof(RuleSpec{}.Log), ShouldEqual, layout.Members[index].Offset) 127 // UINT8 Protocol 128 index++ 129 So("Protocol", ShouldEqual, layout.Members[index].Name) 130 So(unsafe.Offsetof(RuleSpec{}.Protocol), ShouldEqual, layout.Members[index].Offset) 131 // UINT8 ProtocolSpecified 132 index++ 133 So("ProtocolSpecified", ShouldEqual, layout.Members[index].Name) 134 So(unsafe.Offsetof(RuleSpec{}.ProtocolSpecified), ShouldEqual, layout.Members[index].Offset) 135 // UINT8 IcmpType 136 index++ 137 So("IcmpType", ShouldEqual, layout.Members[index].Name) 138 So(unsafe.Offsetof(RuleSpec{}.IcmpType), ShouldEqual, layout.Members[index].Offset) 139 // UINT8 IcmpTypeSpecified 140 index++ 141 So("IcmpTypeSpecified", ShouldEqual, layout.Members[index].Name) 142 So(unsafe.Offsetof(RuleSpec{}.IcmpTypeSpecified), ShouldEqual, layout.Members[index].Offset) 143 // UINT8 IcmpCode 144 index++ 145 So("IcmpCode", ShouldEqual, layout.Members[index].Name) 146 So(unsafe.Offsetof(RuleSpec{}.IcmpCode), ShouldEqual, layout.Members[index].Offset) 147 // UINT8 IcmpCodeSpecified 148 index++ 149 So("IcmpCodeSpecified", ShouldEqual, layout.Members[index].Name) 150 So(unsafe.Offsetof(RuleSpec{}.IcmpCodeSpecified), ShouldEqual, layout.Members[index].Offset) 151 // UINT8 AleAuthConnect 152 index++ 153 So("AleAuthConnect", ShouldEqual, layout.Members[index].Name) 154 So(unsafe.Offsetof(RuleSpec{}.AleAuthConnect), ShouldEqual, layout.Members[index].Offset) 155 // skip reserved 156 index++ 157 // UINT16 ProxyPort 158 index++ 159 So("ProxyPort", ShouldEqual, layout.Members[index].Name) 160 So(unsafe.Offsetof(RuleSpec{}.ProxyPort), ShouldEqual, layout.Members[index].Offset) 161 // INT16 BytesMatchStart 162 index++ 163 So("BytesMatchStart", ShouldEqual, layout.Members[index].Name) 164 So(unsafe.Offsetof(RuleSpec{}.BytesMatchStart), ShouldEqual, layout.Members[index].Offset) 165 // INT32 BytesMatchOffset 166 index++ 167 So("BytesMatchOffset", ShouldEqual, layout.Members[index].Name) 168 So(unsafe.Offsetof(RuleSpec{}.BytesMatchOffset), ShouldEqual, layout.Members[index].Offset) 169 // INT32 BytesMatchSize 170 index++ 171 So("BytesMatchSize", ShouldEqual, layout.Members[index].Name) 172 So(unsafe.Offsetof(RuleSpec{}.BytesMatchSize), ShouldEqual, layout.Members[index].Offset) 173 // PBYTE BytesMatch 174 index++ 175 So("BytesMatch", ShouldEqual, layout.Members[index].Name) 176 So(unsafe.Offsetof(RuleSpec{}.BytesMatch), ShouldEqual, layout.Members[index].Offset) 177 // UINT32 Mark 178 index++ 179 So("Mark", ShouldEqual, layout.Members[index].Name) 180 So(unsafe.Offsetof(RuleSpec{}.Mark), ShouldEqual, layout.Members[index].Offset) 181 // UINT32 GroupId 182 index++ 183 So("GroupId", ShouldEqual, layout.Members[index].Name) 184 So(unsafe.Offsetof(RuleSpec{}.GroupId), ShouldEqual, layout.Members[index].Offset) 185 // INT32 SrcPortCount 186 index++ 187 So("SrcPortCount", ShouldEqual, layout.Members[index].Name) 188 So(unsafe.Offsetof(RuleSpec{}.SrcPortCount), ShouldEqual, layout.Members[index].Offset) 189 // INT32 DstPortCount 190 index++ 191 So("DstPortCount", ShouldEqual, layout.Members[index].Name) 192 So(unsafe.Offsetof(RuleSpec{}.DstPortCount), ShouldEqual, layout.Members[index].Offset) 193 // PPORT_RANGE SrcPorts 194 index++ 195 So("SrcPorts", ShouldEqual, layout.Members[index].Name) 196 So(unsafe.Offsetof(RuleSpec{}.SrcPorts), ShouldEqual, layout.Members[index].Offset) 197 // PPORT_RANGE DstPorts 198 index++ 199 So("DstPorts", ShouldEqual, layout.Members[index].Name) 200 So(unsafe.Offsetof(RuleSpec{}.DstPorts), ShouldEqual, layout.Members[index].Offset) 201 // LPCWCH LogPrefix 202 index++ 203 So("LogPrefix", ShouldEqual, layout.Members[index].Name) 204 So(unsafe.Offsetof(RuleSpec{}.LogPrefix), ShouldEqual, layout.Members[index].Offset) 205 // LPCWCH Application 206 index++ 207 So("Application", ShouldEqual, layout.Members[index].Name) 208 So(unsafe.Offsetof(RuleSpec{}.Application), ShouldEqual, layout.Members[index].Offset) 209 }) 210 211 Convey("The layout of IpsetRuleSpec and IPSET_RULE_SPEC should be the same", func() { 212 layout, err := pdb.GetStructLayout("IPSET_RULE_SPEC") 213 So(err, ShouldBeNil) 214 So(unsafe.Sizeof(IpsetRuleSpec{}), ShouldEqual, layout.Size) 215 // UINT8 NotIpset 216 index := 0 217 So("NotIpset", ShouldEqual, layout.Members[index].Name) 218 So(unsafe.Offsetof(IpsetRuleSpec{}.NotIpset), ShouldEqual, layout.Members[index].Offset) 219 // UINT8 IpsetDstIp 220 index++ 221 So("IpsetDstIp", ShouldEqual, layout.Members[index].Name) 222 So(unsafe.Offsetof(IpsetRuleSpec{}.IpsetDstIp), ShouldEqual, layout.Members[index].Offset) 223 // UINT8 IpsetDstPort 224 index++ 225 So("IpsetDstPort", ShouldEqual, layout.Members[index].Name) 226 So(unsafe.Offsetof(IpsetRuleSpec{}.IpsetDstPort), ShouldEqual, layout.Members[index].Offset) 227 // UINT8 IpsetSrcIp 228 index++ 229 So("IpsetSrcIp", ShouldEqual, layout.Members[index].Name) 230 So(unsafe.Offsetof(IpsetRuleSpec{}.IpsetSrcIp), ShouldEqual, layout.Members[index].Offset) 231 // UINT8 IpsetSrcPort 232 index++ 233 So("IpsetSrcPort", ShouldEqual, layout.Members[index].Name) 234 So(unsafe.Offsetof(IpsetRuleSpec{}.IpsetSrcPort), ShouldEqual, layout.Members[index].Offset) 235 // skip reserved 236 index++ 237 // LPCWCH IpsetName 238 index++ 239 So("IpsetName", ShouldEqual, layout.Members[index].Name) 240 So(unsafe.Offsetof(IpsetRuleSpec{}.IpsetName), ShouldEqual, layout.Members[index].Offset) 241 }) 242 243 Convey("The layout of PortRange and PORT_RANGE should be the same", func() { 244 layout, err := pdb.GetStructLayout("PORT_RANGE") 245 So(err, ShouldBeNil) 246 So(unsafe.Sizeof(PortRange{}), ShouldEqual, layout.Size) 247 // UINT16 PortStart 248 index := 0 249 So("PortStart", ShouldEqual, layout.Members[index].Name) 250 So(unsafe.Offsetof(PortRange{}.PortStart), ShouldEqual, layout.Members[index].Offset) 251 // UINT16 PortEnd 252 index++ 253 So("PortEnd", ShouldEqual, layout.Members[index].Name) 254 So(unsafe.Offsetof(PortRange{}.PortEnd), ShouldEqual, layout.Members[index].Offset) 255 }) 256 257 Convey("The layout of LogPacketInfo and FRONTMAN_LOG_PACKET_INFO should be the same", func() { 258 layout, err := pdb.GetStructLayout("FRONTMAN_LOG_PACKET_INFO") 259 So(err, ShouldBeNil) 260 So(unsafe.Sizeof(LogPacketInfo{}), ShouldEqual, layout.Size) 261 // UINT8 Ipv4 262 index := 0 263 So("Ipv4", ShouldEqual, layout.Members[index].Name) 264 So(unsafe.Offsetof(LogPacketInfo{}.Ipv4), ShouldEqual, layout.Members[index].Offset) 265 // UINT8 Protocol 266 index++ 267 So("Protocol", ShouldEqual, layout.Members[index].Name) 268 So(unsafe.Offsetof(LogPacketInfo{}.Protocol), ShouldEqual, layout.Members[index].Offset) 269 // UINT8 Outbound 270 index++ 271 So("Outbound", ShouldEqual, layout.Members[index].Name) 272 So(unsafe.Offsetof(LogPacketInfo{}.Outbound), ShouldEqual, layout.Members[index].Offset) 273 // skip reserved 274 index++ 275 // UINT16 LocalPort 276 index++ 277 So("LocalPort", ShouldEqual, layout.Members[index].Name) 278 So(unsafe.Offsetof(LogPacketInfo{}.LocalPort), ShouldEqual, layout.Members[index].Offset) 279 // UINT16 RemotePort 280 index++ 281 So("RemotePort", ShouldEqual, layout.Members[index].Name) 282 So(unsafe.Offsetof(LogPacketInfo{}.RemotePort), ShouldEqual, layout.Members[index].Offset) 283 // UINT32 LocalAddr[4] 284 index++ 285 So("LocalAddr", ShouldEqual, layout.Members[index].Name) 286 So(unsafe.Offsetof(LogPacketInfo{}.LocalAddr), ShouldEqual, layout.Members[index].Offset) 287 // // UINT32 RemoteAddr[4] 288 index++ 289 So("RemoteAddr", ShouldEqual, layout.Members[index].Name) 290 So(unsafe.Offsetof(LogPacketInfo{}.RemoteAddr), ShouldEqual, layout.Members[index].Offset) 291 // UINT32 PacketSize 292 index++ 293 So("PacketSize", ShouldEqual, layout.Members[index].Name) 294 So(unsafe.Offsetof(LogPacketInfo{}.PacketSize), ShouldEqual, layout.Members[index].Offset) 295 // UINT32 GroupId 296 index++ 297 So("GroupId", ShouldEqual, layout.Members[index].Name) 298 So(unsafe.Offsetof(LogPacketInfo{}.GroupId), ShouldEqual, layout.Members[index].Offset) 299 // WCHAR LogPrefix[LOGPREFIX_MAX_LENGTH] 300 index++ 301 So("LogPrefix", ShouldEqual, layout.Members[index].Name) 302 So(unsafe.Offsetof(LogPacketInfo{}.LogPrefix), ShouldEqual, layout.Members[index].Offset) 303 }) 304 305 }) 306 307 } 308 309 func TestFrontmanFunctionArguments(t *testing.T) { 310 311 const pointerSize = unsafe.Sizeof(uintptr(0)) 312 313 Convey("Given a Frontman PDB", t, func() { 314 315 pdb, err := abi.FindFrontmanPdb() 316 So(err, ShouldBeNil) 317 318 Convey("The arguments to FrontmanGetDestInfo should be as expected", func() { 319 funcArgs, err := pdb.GetFunctionArguments("FrontmanGetDestInfo") 320 So(err, ShouldBeNil) 321 So(len(funcArgs), ShouldEqual, 3) 322 So(funcArgs[0].Size, ShouldEqual, pointerSize) 323 So(funcArgs[1].Size, ShouldEqual, pointerSize) 324 So(funcArgs[2].Size, ShouldEqual, pointerSize) 325 }) 326 327 Convey("The arguments to FrontmanApplyDestHandle should be as expected", func() { 328 funcArgs, err := pdb.GetFunctionArguments("FrontmanApplyDestHandle") 329 So(err, ShouldBeNil) 330 So(len(funcArgs), ShouldEqual, 2) 331 So(funcArgs[0].Size, ShouldEqual, pointerSize) 332 So(funcArgs[1].Size, ShouldEqual, pointerSize) 333 }) 334 335 Convey("The arguments to FrontmanFreeDestHandle should be as expected", func() { 336 funcArgs, err := pdb.GetFunctionArguments("FrontmanFreeDestHandle") 337 So(err, ShouldBeNil) 338 So(len(funcArgs), ShouldEqual, 1) 339 So(funcArgs[0].Size, ShouldEqual, pointerSize) 340 }) 341 342 Convey("The arguments to IpsetProvider_NewIpset should be as expected", func() { 343 funcArgs, err := pdb.GetFunctionArguments("IpsetProvider_NewIpset") 344 So(err, ShouldBeNil) 345 So(len(funcArgs), ShouldEqual, 4) 346 So(funcArgs[0].Size, ShouldEqual, pointerSize) 347 So(funcArgs[1].Size, ShouldEqual, pointerSize) 348 So(funcArgs[2].Size, ShouldEqual, pointerSize) 349 So(funcArgs[3].Size, ShouldEqual, pointerSize) 350 }) 351 352 Convey("The arguments to IpsetProvider_GetIpset should be as expected", func() { 353 funcArgs, err := pdb.GetFunctionArguments("IpsetProvider_GetIpset") 354 So(err, ShouldBeNil) 355 So(len(funcArgs), ShouldEqual, 3) 356 So(funcArgs[0].Size, ShouldEqual, pointerSize) 357 So(funcArgs[1].Size, ShouldEqual, pointerSize) 358 So(funcArgs[2].Size, ShouldEqual, pointerSize) 359 }) 360 361 Convey("The arguments to IpsetProvider_DestroyAll should be as expected", func() { 362 funcArgs, err := pdb.GetFunctionArguments("IpsetProvider_DestroyAll") 363 So(err, ShouldBeNil) 364 So(len(funcArgs), ShouldEqual, 2) 365 So(funcArgs[0].Size, ShouldEqual, pointerSize) 366 So(funcArgs[1].Size, ShouldEqual, pointerSize) 367 }) 368 369 Convey("The arguments to IpsetProvider_ListIPSets should be as expected", func() { 370 funcArgs, err := pdb.GetFunctionArguments("IpsetProvider_ListIPSets") 371 So(err, ShouldBeNil) 372 So(len(funcArgs), ShouldEqual, 4) 373 So(funcArgs[0].Size, ShouldEqual, pointerSize) 374 So(funcArgs[1].Size, ShouldEqual, pointerSize) 375 So(funcArgs[2].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 376 So(funcArgs[3].Size, ShouldEqual, pointerSize) 377 }) 378 379 Convey("The arguments to IpsetProvider_ListIPSetsDetail should be as expected", func() { 380 funcArgs, err := pdb.GetFunctionArguments("IpsetProvider_ListIPSetsDetail") 381 So(err, ShouldBeNil) 382 So(len(funcArgs), ShouldEqual, 5) 383 So(funcArgs[0].Size, ShouldEqual, pointerSize) 384 So(funcArgs[1].Size, ShouldEqual, unsafe.Sizeof(int32(0))) 385 So(funcArgs[2].Size, ShouldEqual, pointerSize) 386 So(funcArgs[3].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 387 So(funcArgs[4].Size, ShouldEqual, pointerSize) 388 }) 389 390 Convey("The arguments to Ipset_Add should be as expected", func() { 391 funcArgs, err := pdb.GetFunctionArguments("Ipset_Add") 392 So(err, ShouldBeNil) 393 So(len(funcArgs), ShouldEqual, 4) 394 So(funcArgs[0].Size, ShouldEqual, pointerSize) 395 So(funcArgs[1].Size, ShouldEqual, pointerSize) 396 So(funcArgs[2].Size, ShouldEqual, pointerSize) 397 So(funcArgs[3].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 398 }) 399 400 Convey("The arguments to Ipset_AddOption should be as expected", func() { 401 funcArgs, err := pdb.GetFunctionArguments("Ipset_AddOption") 402 So(err, ShouldBeNil) 403 So(len(funcArgs), ShouldEqual, 5) 404 So(funcArgs[0].Size, ShouldEqual, pointerSize) 405 So(funcArgs[1].Size, ShouldEqual, pointerSize) 406 So(funcArgs[2].Size, ShouldEqual, pointerSize) 407 So(funcArgs[3].Size, ShouldEqual, pointerSize) 408 So(funcArgs[4].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 409 }) 410 411 Convey("The arguments to Ipset_Delete should be as expected", func() { 412 funcArgs, err := pdb.GetFunctionArguments("Ipset_Delete") 413 So(err, ShouldBeNil) 414 So(len(funcArgs), ShouldEqual, 3) 415 So(funcArgs[0].Size, ShouldEqual, pointerSize) 416 So(funcArgs[1].Size, ShouldEqual, pointerSize) 417 So(funcArgs[2].Size, ShouldEqual, pointerSize) 418 }) 419 420 Convey("The arguments to Ipset_Destroy should be as expected", func() { 421 funcArgs, err := pdb.GetFunctionArguments("Ipset_Destroy") 422 So(err, ShouldBeNil) 423 So(len(funcArgs), ShouldEqual, 2) 424 So(funcArgs[0].Size, ShouldEqual, pointerSize) 425 So(funcArgs[1].Size, ShouldEqual, pointerSize) 426 }) 427 428 Convey("The arguments to Ipset_Flush should be as expected", func() { 429 funcArgs, err := pdb.GetFunctionArguments("Ipset_Flush") 430 So(err, ShouldBeNil) 431 So(len(funcArgs), ShouldEqual, 2) 432 So(funcArgs[0].Size, ShouldEqual, pointerSize) 433 So(funcArgs[1].Size, ShouldEqual, pointerSize) 434 }) 435 436 Convey("The arguments to Ipset_Test should be as expected", func() { 437 funcArgs, err := pdb.GetFunctionArguments("Ipset_Test") 438 So(err, ShouldBeNil) 439 So(len(funcArgs), ShouldEqual, 3) 440 So(funcArgs[0].Size, ShouldEqual, pointerSize) 441 So(funcArgs[1].Size, ShouldEqual, pointerSize) 442 So(funcArgs[2].Size, ShouldEqual, pointerSize) 443 }) 444 445 Convey("The arguments to PacketFilterStart should be as expected", func() { 446 funcArgs, err := pdb.GetFunctionArguments("PacketFilterStart") 447 So(err, ShouldBeNil) 448 So(len(funcArgs), ShouldEqual, 4) 449 So(funcArgs[0].Size, ShouldEqual, pointerSize) 450 So(funcArgs[1].Size, ShouldEqual, pointerSize) 451 So(funcArgs[2].Size, ShouldEqual, pointerSize) 452 So(funcArgs[3].Size, ShouldEqual, pointerSize) 453 }) 454 455 Convey("The arguments to PacketFilterClose should be as expected", func() { 456 funcArgs, err := pdb.GetFunctionArguments("PacketFilterClose") 457 So(err, ShouldBeNil) 458 So(len(funcArgs), ShouldEqual, 0) 459 }) 460 461 Convey("The arguments to PacketFilterForwardPacket should be as expected", func() { 462 funcArgs, err := pdb.GetFunctionArguments("PacketFilterForwardPacket") 463 So(err, ShouldBeNil) 464 So(len(funcArgs), ShouldEqual, 2) 465 So(funcArgs[0].Size, ShouldEqual, pointerSize) 466 So(funcArgs[1].Size, ShouldEqual, pointerSize) 467 }) 468 469 Convey("The arguments to AppendFilter should be as expected", func() { 470 funcArgs, err := pdb.GetFunctionArguments("AppendFilter") 471 So(err, ShouldBeNil) 472 So(len(funcArgs), ShouldEqual, 3) 473 So(funcArgs[0].Size, ShouldEqual, pointerSize) 474 So(funcArgs[1].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 475 So(funcArgs[2].Size, ShouldEqual, pointerSize) 476 }) 477 478 Convey("The arguments to InsertFilter should be as expected", func() { 479 funcArgs, err := pdb.GetFunctionArguments("InsertFilter") 480 So(err, ShouldBeNil) 481 So(len(funcArgs), ShouldEqual, 4) 482 So(funcArgs[0].Size, ShouldEqual, pointerSize) 483 So(funcArgs[1].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 484 So(funcArgs[2].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 485 So(funcArgs[3].Size, ShouldEqual, pointerSize) 486 }) 487 488 Convey("The arguments to DestroyFilter should be as expected", func() { 489 funcArgs, err := pdb.GetFunctionArguments("DestroyFilter") 490 So(err, ShouldBeNil) 491 So(len(funcArgs), ShouldEqual, 2) 492 So(funcArgs[0].Size, ShouldEqual, pointerSize) 493 So(funcArgs[1].Size, ShouldEqual, pointerSize) 494 }) 495 496 Convey("The arguments to EmptyFilter should be as expected", func() { 497 funcArgs, err := pdb.GetFunctionArguments("EmptyFilter") 498 So(err, ShouldBeNil) 499 So(len(funcArgs), ShouldEqual, 2) 500 So(funcArgs[0].Size, ShouldEqual, pointerSize) 501 So(funcArgs[1].Size, ShouldEqual, pointerSize) 502 }) 503 504 Convey("The arguments to GetFilterList should be as expected", func() { 505 funcArgs, err := pdb.GetFunctionArguments("GetFilterList") 506 So(err, ShouldBeNil) 507 So(len(funcArgs), ShouldEqual, 5) 508 So(funcArgs[0].Size, ShouldEqual, pointerSize) 509 So(funcArgs[1].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 510 So(funcArgs[2].Size, ShouldEqual, pointerSize) 511 So(funcArgs[3].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 512 So(funcArgs[4].Size, ShouldEqual, pointerSize) 513 }) 514 515 Convey("The arguments to AppendFilterCriteria should be as expected", func() { 516 funcArgs, err := pdb.GetFunctionArguments("AppendFilterCriteria") 517 So(err, ShouldBeNil) 518 So(len(funcArgs), ShouldEqual, 6) 519 So(funcArgs[0].Size, ShouldEqual, pointerSize) 520 So(funcArgs[1].Size, ShouldEqual, pointerSize) 521 So(funcArgs[2].Size, ShouldEqual, pointerSize) 522 So(funcArgs[3].Size, ShouldEqual, pointerSize) 523 So(funcArgs[4].Size, ShouldEqual, pointerSize) 524 So(funcArgs[5].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 525 }) 526 527 Convey("The arguments to DeleteFilterCriteria should be as expected", func() { 528 funcArgs, err := pdb.GetFunctionArguments("DeleteFilterCriteria") 529 So(err, ShouldBeNil) 530 So(len(funcArgs), ShouldEqual, 3) 531 So(funcArgs[0].Size, ShouldEqual, pointerSize) 532 So(funcArgs[1].Size, ShouldEqual, pointerSize) 533 So(funcArgs[2].Size, ShouldEqual, pointerSize) 534 }) 535 536 Convey("The arguments to GetCriteriaList should be as expected", func() { 537 funcArgs, err := pdb.GetFunctionArguments("GetCriteriaList") 538 So(err, ShouldBeNil) 539 So(len(funcArgs), ShouldEqual, 5) 540 So(funcArgs[0].Size, ShouldEqual, pointerSize) 541 So(funcArgs[1].Size, ShouldEqual, unsafe.Sizeof(int32(0))) 542 So(funcArgs[2].Size, ShouldEqual, pointerSize) 543 So(funcArgs[3].Size, ShouldEqual, unsafe.Sizeof(uint32(0))) 544 So(funcArgs[4].Size, ShouldEqual, pointerSize) 545 }) 546 547 }) 548 549 }