PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
// Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package icmp_test import ( "bytes" "net" "reflect" "testing" "golang.org/x/net/icmp" "golang.org/x/net/internal/iana" "golang.org/x/net/ipv4" "golang.org/x/net/ipv6" ) func TestMarshalAndParseMessage(t *testing.T) { fn := func(t *testing.T, proto int, tms []icmp.Message) { var pshs [][]byte switch proto { case iana.ProtocolICMP: pshs = [][]byte{nil} case iana.ProtocolIPv6ICMP: pshs = [][]byte{ icmp.IPv6PseudoHeader(net.ParseIP("fe80::1"), net.ParseIP("ff02::1")), nil, } } for i, tm := range tms { for _, psh := range pshs { b, err := tm.Marshal(psh) if err != nil { t.Fatalf("#%d: %v", i, err) } m, err := icmp.ParseMessage(proto, b) if err != nil { t.Fatalf("#%d: %v", i, err) } if m.Type != tm.Type || m.Code != tm.Code { t.Errorf("#%d: got %#v; want %#v", i, m, &tm) continue } if !reflect.DeepEqual(m.Body, tm.Body) { t.Errorf("#%d: got %#v; want %#v", i, m.Body, tm.Body) continue } } } } t.Run("IPv4", func(t *testing.T) { fn(t, iana.ProtocolICMP, []icmp.Message{ { Type: ipv4.ICMPTypeDestinationUnreachable, Code: 15, Body: &icmp.DstUnreach{ Data: []byte("ERROR-INVOKING-PACKET"), }, }, { Type: ipv4.ICMPTypeTimeExceeded, Code: 1, Body: &icmp.TimeExceeded{ Data: []byte("ERROR-INVOKING-PACKET"), }, }, { Type: ipv4.ICMPTypeParameterProblem, Code: 2, Body: &icmp.ParamProb{ Pointer: 8, Data: []byte("ERROR-INVOKING-PACKET"), }, }, { Type: ipv4.ICMPTypeEcho, Code: 0, Body: &icmp.Echo{ ID: 1, Seq: 2, Data: []byte("HELLO-R-U-THERE"), }, }, { Type: ipv4.ICMPTypeExtendedEchoRequest, Code: 0, Body: &icmp.ExtendedEchoRequest{ ID: 1, Seq: 2, Extensions: []icmp.Extension{ &icmp.InterfaceIdent{ Class: 3, Type: 1, Name: "en101", }, }, }, }, { Type: ipv4.ICMPTypeExtendedEchoReply, Code: 0, Body: &icmp.ExtendedEchoReply{ State: 4 /* Delay */, Active: true, IPv4: true, }, }, }) }) t.Run("IPv6", func(t *testing.T) { fn(t, iana.ProtocolIPv6ICMP, []icmp.Message{ { Type: ipv6.ICMPTypeDestinationUnreachable, Code: 6, Body: &icmp.DstUnreach{ Data: []byte("ERROR-INVOKING-PACKET"), }, }, { Type: ipv6.ICMPTypePacketTooBig, Code: 0, Body: &icmp.PacketTooBig{ MTU: 1<<16 - 1, Data: []byte("ERROR-INVOKING-PACKET"), }, }, { Type: ipv6.ICMPTypeTimeExceeded, Code: 1, Body: &icmp.TimeExceeded{ Data: []byte("ERROR-INVOKING-PACKET"), }, }, { Type: ipv6.ICMPTypeParameterProblem, Code: 2, Body: &icmp.ParamProb{ Pointer: 8, Data: []byte("ERROR-INVOKING-PACKET"), }, }, { Type: ipv6.ICMPTypeEchoRequest, Code: 0, Body: &icmp.Echo{ ID: 1, Seq: 2, Data: []byte("HELLO-R-U-THERE"), }, }, { Type: ipv6.ICMPTypeExtendedEchoRequest, Code: 0, Body: &icmp.ExtendedEchoRequest{ ID: 1, Seq: 2, Extensions: []icmp.Extension{ &icmp.InterfaceIdent{ Class: 3, Type: 2, Index: 911, }, }, }, }, { Type: ipv6.ICMPTypeExtendedEchoReply, Code: 0, Body: &icmp.ExtendedEchoReply{ State: 5 /* Probe */, Active: true, IPv6: true, }, }, }) }) } func TestMarshalAndParseRawMessage(t *testing.T) { t.Run("RawBody", func(t *testing.T) { for i, tt := range []struct { m icmp.Message wire []byte parseShouldFail bool }{ { // Nil body m: icmp.Message{ Type: ipv4.ICMPTypeDestinationUnreachable, Code: 127, }, wire: []byte{ 0x03, 0x7f, 0xfc, 0x80, }, parseShouldFail: true, }, { // Empty body m: icmp.Message{ Type: ipv6.ICMPTypeDestinationUnreachable, Code: 128, Body: &icmp.RawBody{}, }, wire: []byte{ 0x01, 0x80, 0x00, 0x00, }, parseShouldFail: true, }, { // Crafted body m: icmp.Message{ Type: ipv6.ICMPTypeDuplicateAddressConfirmation, Code: 129, Body: &icmp.RawBody{ Data: []byte{0xca, 0xfe}, }, }, wire: []byte{ 0x9e, 0x81, 0x00, 0x00, 0xca, 0xfe, }, parseShouldFail: false, }, } { b, err := tt.m.Marshal(nil) if err != nil { t.Errorf("#%d: %v", i, err) continue } if !bytes.Equal(b, tt.wire) { t.Errorf("#%d: got %#v; want %#v", i, b, tt.wire) continue } m, err := icmp.ParseMessage(tt.m.Type.Protocol(), b) if err != nil != tt.parseShouldFail { t.Errorf("#%d: got %v, %v", i, m, err) continue } if tt.parseShouldFail { continue } if m.Type != tt.m.Type || m.Code != tt.m.Code { t.Errorf("#%d: got %v; want %v", i, m, tt.m) continue } if !bytes.Equal(m.Body.(*icmp.RawBody).Data, tt.m.Body.(*icmp.RawBody).Data) { t.Errorf("#%d: got %#v; want %#v", i, m.Body, tt.m.Body) continue } } }) t.Run("RawExtension", func(t *testing.T) { for i, tt := range []struct { m icmp.Message wire []byte }{ { // Unaligned data and nil extension m: icmp.Message{ Type: ipv6.ICMPTypeDestinationUnreachable, Code: 130, Body: &icmp.DstUnreach{ Data: []byte("ERROR-INVOKING-PACKET"), }, }, wire: []byte{ 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 'E', 'R', 'R', 'O', 'R', '-', 'I', 'N', 'V', 'O', 'K', 'I', 'N', 'G', '-', 'P', 'A', 'C', 'K', 'E', 'T', }, }, { // Unaligned data and empty extension m: icmp.Message{ Type: ipv6.ICMPTypeDestinationUnreachable, Code: 131, Body: &icmp.DstUnreach{ Data: []byte("ERROR-INVOKING-PACKET"), Extensions: []icmp.Extension{ &icmp.RawExtension{}, }, }, }, wire: []byte{ 0x01, 0x83, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 'E', 'R', 'R', 'O', 'R', '-', 'I', 'N', 'V', 'O', 'K', 'I', 'N', 'G', '-', 'P', 'A', 'C', 'K', 'E', 'T', 0x20, 0x00, 0xdf, 0xff, }, }, { // Nil extension m: icmp.Message{ Type: ipv6.ICMPTypeExtendedEchoRequest, Code: 132, Body: &icmp.ExtendedEchoRequest{ ID: 1, Seq: 2, Local: true, }, }, wire: []byte{ 0xa0, 0x84, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, }, }, { // Empty extension m: icmp.Message{ Type: ipv6.ICMPTypeExtendedEchoRequest, Code: 133, Body: &icmp.ExtendedEchoRequest{ ID: 1, Seq: 2, Local: true, Extensions: []icmp.Extension{ &icmp.RawExtension{}, }, }, }, wire: []byte{ 0xa0, 0x85, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x20, 0x00, 0xdf, 0xff, }, }, { // Crafted extension m: icmp.Message{ Type: ipv6.ICMPTypeExtendedEchoRequest, Code: 134, Body: &icmp.ExtendedEchoRequest{ ID: 1, Seq: 2, Local: true, Extensions: []icmp.Extension{ &icmp.RawExtension{ Data: []byte("CRAFTED"), }, }, }, }, wire: []byte{ 0xa0, 0x86, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x20, 0x00, 0xc3, 0x21, 'C', 'R', 'A', 'F', 'T', 'E', 'D', }, }, } { b, err := tt.m.Marshal(nil) if err != nil { t.Errorf("#%d: %v", i, err) continue } if !bytes.Equal(b, tt.wire) { t.Errorf("#%d: got %#v; want %#v", i, b, tt.wire) continue } m, err := icmp.ParseMessage(tt.m.Type.Protocol(), b) if err != nil { t.Errorf("#%d: %v", i, err) continue } if m.Type != tt.m.Type || m.Code != tt.m.Code { t.Errorf("#%d: got %v; want %v", i, m, tt.m) continue } } }) }