| #include <Copyright.h> |
| /******************************************************************************** |
| * portMonitor.c |
| * |
| * DESCRIPTION: |
| * This sample shows how to monitor a certain port. Port monitoring is |
| * supported by the ClipperShip device with Egress only monitoring or |
| * Egress and Ingress monitoring. |
| * |
| * DEPENDENCIES: |
| * Only ClipperShip Family supports this feature. |
| * |
| * FILE REVISION NUMBER: |
| * |
| * COMMENTS: |
| *******************************************************************************/ |
| |
| #include "msSample.h" |
| |
| /* |
| * Enable EgressMonitoring for the monitoredPort. |
| * With this setup, monitoringPort will receive every packet |
| * which egressed from monitoredPort. |
| */ |
| GT_STATUS sampleEgressMonitor(GT_QD_DEV *dev,GT_LPORT monitoredPort, GT_LPORT monitoringPort) |
| { |
| GT_STATUS status; |
| GT_U16 pav; |
| |
| /* |
| * Enable EgressMonitoring for the monitoredPort. |
| */ |
| pav = (1<<monitoringPort) || (1<<monitoredPort); |
| |
| if((status = gpavSetPAV(dev,monitoredPort, pav)) != GT_OK) |
| { |
| MSG_PRINT(("gpavSetPAV return Failed\n")); |
| return status; |
| } |
| |
| return GT_OK; |
| } |
| |
| /* |
| * Enable Egress Monitoring and Ingress Monitoring for the monitoredPort. |
| * With this setup, monitoringPort will receive every packet |
| * which is both from monitoredPort and to monitoredPort. |
| */ |
| GT_STATUS samplePortMonitor(GT_QD_DEV *dev,GT_LPORT monitoredPort, GT_LPORT monitoringPort) |
| { |
| GT_STATUS status; |
| GT_U16 pav; |
| |
| /* |
| * Enable Egress Monitoring for the monitoredPort. |
| */ |
| pav = (1<<monitoringPort) || (1<<monitoredPort); |
| |
| if((status = gpavSetPAV(dev,monitoredPort, pav)) != GT_OK) |
| { |
| MSG_PRINT(("gpavSetPAV return Failed\n")); |
| return status; |
| } |
| |
| /* |
| * Enable Ingress Monitoring for the monitoredPort. |
| */ |
| if((status = gpavSetIngressMonitor(dev,monitoredPort, GT_TRUE)) != GT_OK) |
| { |
| MSG_PRINT(("gpavSetIngressMonitor return Failed\n")); |
| return status; |
| } |
| |
| return GT_OK; |
| } |
| |
| |
| /* |
| * Disable Egress Monitoring and Ingress Monitoring for the monitoredPort. |
| */ |
| GT_STATUS sampleDisablePortMonitor(GT_QD_DEV *dev,GT_LPORT monitoredPort) |
| { |
| GT_STATUS status; |
| GT_U16 pav; |
| |
| /* |
| * Disable Egress Monitoring for the monitoredPort. |
| */ |
| pav = (1<<monitoredPort); |
| |
| if((status = gpavSetPAV(dev,monitoredPort, pav)) != GT_OK) |
| { |
| MSG_PRINT(("gpavSetPAV return Failed\n")); |
| return status; |
| } |
| |
| /* |
| * Disable Ingress Monitoring for the monitoredPort. |
| */ |
| if((status = gpavSetIngressMonitor(dev,monitoredPort, GT_FALSE)) != GT_OK) |
| { |
| MSG_PRINT(("gpavSetIngressMonitor return Failed\n")); |
| return status; |
| } |
| |
| return GT_OK; |
| } |
| |