Jenis Callout

Jenis callout berikut dapat digunakan dengan WFP:

Inline Inspection Callout
Jenis callout ini selalu mengembalikan FWP_ACTION_CONTINUE dari fungsi classifyFn dan tidak mengubah lalu lintas jaringan dengan cara apa pun. Callout yang mengumpulkan statistik jaringan adalah contoh jenis callout ini.

Untuk jenis panggilan ini, jenis tindakan filter (ditentukan oleh anggota Jenis struktur FWPS_ACTION0 ) harus diatur ke FWP_ACTION_CALLOUT_INSPECTION.

Callout Inspeksi Out-of-band
Jenis callout ini tidak mengubah lalu lintas jaringan. Sebaliknya, ini menunda inspeksi apa pun yang akan dilakukan di luar fungsi classifyFn dengan "menunggu" data yang ditunjukkan dan kemudian memasukkan kembali data yang tertunda ke tumpukan TCP/IP dengan salah satu fungsi injeksi paket. Tertunda diimplementasikan dengan terlebih dahulu mengkloning data yang ditunjukkan, diikuti dengan mengembalikan FWP_ACTION_BLOCK dari fungsi classifyFn yang memiliki set bit FWPS_CLASSIFY_OUT_FLAG_ABSORB .

Callout Modifikasi Sebaris
Jenis callout ini memodifikasi lalu lintas jaringan dengan terlebih dahulu membuat kloning data yang ditunjukkan, lalu memodifikasi kloning, dan akhirnya menyuntikkan klon yang dimodifikasi kembali ke tumpukan TCP/IP dari fungsi classifyFn . Jenis callout ini juga mengembalikan FWP_ACTION_BLOCK dari fungsi classifyFn yang memiliki set bit FWPS_CLASSIFY_OUT_FLAG_ABSORB .

Jenis tindakan filter untuk jenis callout ini harus diatur ke FWP_ACTION_CALLOUT_TERMINATING.

Callout Modifikasi Out-of-band
Jenis callout ini pertama-tama mereferensikan paket yang ditunjukkan dengan menggunakan fungsi FwpsReferenceNetBufferList0 yang memiliki parameter intentToModify yang diatur ke TRUE. Callout kemudian mengembalikan FWP_ACTION_BLOCK dengan bit FWPS_CLASSIFY_OUT_FLAG_ABSORB diatur dari fungsi classifyFn . Ketika paket siap untuk dimodifikasi di luar classifyFn, callout mengkloning paket yang direferensikan (segera setelah dikloning, paket asli kemudian dapat didereferensikan). Callout kemudian memodifikasi kloning dan menyuntikkan paket yang dimodifikasi kembali ke tumpukan TCP/IP.

Jenis tindakan filter untuk jenis callout ini harus diatur ke FWP_ACTION_CALLOUT_TERMINATING.

Callout Pengalihan
Untuk informasi selengkapnya tentang jenis callout ini, lihat Menggunakan Ikatan atau Sambungkan Pengalihan.

Ada dua jenis callout pengalihan:

  • Callout pengalihan ikatan memungkinkan driver callout untuk memodifikasi alamat lokal dan port lokal soket.
  • Callout pengalihan sambungan memungkinkan driver callout untuk mengubah alamat jarak jauh dan port jarak jauh koneksi.

Jenis tindakan filter untuk jenis callout ini harus diatur ke FWP_ACTION_PERMIT.

Untuk informasi selengkapnya tentang FWPS_CLASSIFY_OUT_FLAG_ABSORB, lihat FWPS_CLASSIFY_OUT0. Bendera ini tidak valid pada lapisan pembuangan WFP mana pun. Mengembalikan FWP_ACTION_BLOCK dengan bendera FWPS_CLASSIFY_OUT_FLAG_ABSORB yang ditetapkan dari fungsi classifyFn menyebabkan paket diam-diam dibuang, sedih sehingga paket tidak akan mencapai lapisan pembuangan WFP apa pun, juga tidak akan menyebabkan peristiwa audit dihasilkan.

Meskipun daftar buffer bersih yang dikloning dapat dimodifikasi, misalnya, dengan menambahkan atau menghapus buffer bersih atau MDL, atau keduanya, callout harus membatalkan modifikasi tersebut sebelum mereka memanggil fungsi FwpsFreeCloneNetBufferList0 .

Untuk hidup berdampingan dengan callout lain yang melakukan inspeksi paket, modifikasi paket, atau pengalihan koneksi, sebelum paket tertunda dengan mekanisme referensi/clone-drop-reinject, callout harus "hard"-drop paket asli dengan menghapus bendera FWPS_RIGHT_ACTION_WRITE di anggota hak struktur FWPS_CLASSIFY_OUT0 yang dikembalikan oleh fungsi classifyFn . Jika bendera FWPS_RIGHT_ACTION_WRITE diatur ketika classifyFn dipanggil (yang berarti bahwa paket dapat ditunda dan kemudian disuntikkan kembali atau dimodifikasi), callout tidak boleh menunggu indikasi dan tidak boleh mengubah jenis tindakan saat ini; dan itu harus menunggu callout dengan bobot yang lebih tinggi untuk menyuntikkan kloning yang mungkin dimodifikasi.

Bendera FWPS_RIGHT_ACTION_WRITE harus diatur setiap kali panggilan menunggu klasifikasi. Driver callout Anda harus menguji bendera FWPS_RIGHT_ACTION_WRITE untuk memeriksa hak callout Anda untuk mengembalikan tindakan. Jika bendera ini tidak diatur, callout Anda masih dapat mengembalikan tindakan FWP_ACTION_BLOCK untuk mem-veto tindakan FWP_ACTION_PERMIT yang dikembalikan oleh callout sebelumnya. Dalam contoh yang ditampilkan dalam Menggunakan Callout untuk Inspeksi Mendalam, fungsi hanya keluar jika bendera tidak diatur.

Fungsi FwpsPendOperation0 digunakan untuk paket tertunda yang berasal dari lapisan pemfilteran manajemenFWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXX, FWPM_LAYER_ALE_AUTH_LISTEN_XXX, atau FWPM_LAYER_ALE_AUTH_CONNECT_XXX.

Fungsi FwpsPendClassify0 digunakan untuk paket tertunda yang berasal dari lapisan pemfilteran run-time berikut:

FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6