packet_capture.proto

Defines a gNOI protocol API for PCAP feature.

Table 1. Packet capture remote procedure calls
RPC Purpose
EnablePCAPOnInterface Enable packet capture for the specificed interface.
DisablePCAPOnInterface Disable packet capture on the specified interface.
ListEnabledInterfaces List all interfaces enabled for packet capture.
DeletePCAPFile Delete the pcap file.
StartStopPcap Start or stop packet capture.
RetrieveStartStopPcap RetrieveStartStopPcap
syntax = "proto3";

package pcap;

service PacketCapture {
  // EnablePCAPOnInterface will enable to capture the packets for the provided interface.
  rpc EnablePCAPOnInterface(PcapInterface) returns (PcapResponse) {};

  // DisablePCAPOnInterface will disable to capture the packets on interface
  rpc DisablePCAPOnInterface(InterfaceInfo) returns(PcapResponse) {};

  //ListEnabledInterfaces list all the interfaces enabled for packet capture. 
  rpc ListEnabledInterfaces(ListEnabledInterfacesRequest) returns (PcapEnabledInterfacesResponse) {};

  // DeletePCAPFile delete the pcap file
  rpc DeletePCAPFile(DeletePcapFileRequest) returns (PcapResponse) {};

  // StartStopPcap
  rpc StartStopPcap(StartStopPcapRequest) returns (PcapResponse) {};

  // RetrieveStartStopPcap
  rpc RetrieveStartStopPcap(RetrieveStartStopPcapRequest) returns (RetrieveStartStopPcapResponse) {};
}


message ListEnabledInterfacesRequest {
}

message RetrieveStartStopPcapRequest {
}

message PcapServiceRequest {

	oneof Request {
		PcapInterface pcap_interface = 1;
		InterfaceInfo interface_info = 2;
		ListEnabledInterfacesRequest list_enabled_interfaces_request = 3;
		DeletePcapFileRequest delete_pcap_file_request = 4;
		StartStopPcapRequest start_stop_pcap_request = 5;
		RetrieveStartStopPcapRequest retrieve_start_stop_pcap_request = 6;
	}
}
		
// It is a reusable message which has the info of interface name and type.

message InterfaceInfo {
//name of the interface
   string name = 1;
//type of the interface
   string type = 2;
}

// PcapInterface  is the message for the packet  capture based on the interface, direction and filter
message PcapInterface {
  InterfaceInfo interface_info = 1;
  enum Direction {
      RX = 0;
      TX = 1;
      BOTH = 2;
  }
  Direction direction = 2;
  int32 packet_count = 3;
  enum Protocol {
     L2 = 0;
     L3 = 1;
     ALL = 3;
   }
   Protocol protocol_info = 4;
}

// The PcapResponse is sent from the Target to the Client in response to the
// enable or disable packet capture RPCs and for deleting PCAP file. It indicates the success 
//or error case 
message PcapResponse {
 oneof response {
    Success success = 1;
    Failure failure = 2;
  }
}

//The target will reply as CaptureOK
message Success {}
//the target will reply with Failure message if any.
message Failure {
  string error_message =1;
}

//The PcapEnabledInterfacesResponse will respond with the interface info
//for PCAP enabled interfaces with details about  direction, packet count , protocol
message PcapEnabledInterfacesResponse {
  repeated PcapInterface pcap_interface = 1;
}
//The DeletePcapFileRequest is used  as request message for deleting the Pcap file 
// where the request contains the pcap file name.
message DeletePcapFileRequest {
 string file_name =1;
}

message StartStopPcapRequest {
    enum StartStopEnum {
     start = 0;
     stop = 1;
   }
   StartStopEnum StartStop = 1;
}

message RetrieveStartStopPcapResponse {
  StartStopPcapRequest start_stop_pcap_request = 1;
}