github.com/networkservicemesh/govpp@v0.0.0-20240328101142-8a444680fbba/binapi/interface/interface_rpc.ba.go (about)

     1  // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
     2  
     3  package interfaces
     4  
     5  import (
     6  	"context"
     7  	"fmt"
     8  	"io"
     9  
    10  	memclnt "github.com/networkservicemesh/govpp/binapi/memclnt"
    11  	api "go.fd.io/govpp/api"
    12  )
    13  
    14  // RPCService defines RPC service interface.
    15  type RPCService interface {
    16  	CollectDetailedInterfaceStats(ctx context.Context, in *CollectDetailedInterfaceStats) (*CollectDetailedInterfaceStatsReply, error)
    17  	CreateLoopback(ctx context.Context, in *CreateLoopback) (*CreateLoopbackReply, error)
    18  	CreateLoopbackInstance(ctx context.Context, in *CreateLoopbackInstance) (*CreateLoopbackInstanceReply, error)
    19  	CreateSubif(ctx context.Context, in *CreateSubif) (*CreateSubifReply, error)
    20  	CreateVlanSubif(ctx context.Context, in *CreateVlanSubif) (*CreateVlanSubifReply, error)
    21  	DeleteLoopback(ctx context.Context, in *DeleteLoopback) (*DeleteLoopbackReply, error)
    22  	DeleteSubif(ctx context.Context, in *DeleteSubif) (*DeleteSubifReply, error)
    23  	GetBuffersStats(ctx context.Context, in *GetBuffersStats) (*GetBuffersStatsReply, error)
    24  	HwInterfaceSetMtu(ctx context.Context, in *HwInterfaceSetMtu) (*HwInterfaceSetMtuReply, error)
    25  	InterfaceNameRenumber(ctx context.Context, in *InterfaceNameRenumber) (*InterfaceNameRenumberReply, error)
    26  	PcapSetFilterFunction(ctx context.Context, in *PcapSetFilterFunction) (*PcapSetFilterFunctionReply, error)
    27  	PcapTraceOff(ctx context.Context, in *PcapTraceOff) (*PcapTraceOffReply, error)
    28  	PcapTraceOn(ctx context.Context, in *PcapTraceOn) (*PcapTraceOnReply, error)
    29  	SwInterfaceAddDelAddress(ctx context.Context, in *SwInterfaceAddDelAddress) (*SwInterfaceAddDelAddressReply, error)
    30  	SwInterfaceAddDelMacAddress(ctx context.Context, in *SwInterfaceAddDelMacAddress) (*SwInterfaceAddDelMacAddressReply, error)
    31  	SwInterfaceAddressReplaceBegin(ctx context.Context, in *SwInterfaceAddressReplaceBegin) (*SwInterfaceAddressReplaceBeginReply, error)
    32  	SwInterfaceAddressReplaceEnd(ctx context.Context, in *SwInterfaceAddressReplaceEnd) (*SwInterfaceAddressReplaceEndReply, error)
    33  	SwInterfaceClearStats(ctx context.Context, in *SwInterfaceClearStats) (*SwInterfaceClearStatsReply, error)
    34  	SwInterfaceDump(ctx context.Context, in *SwInterfaceDump) (RPCService_SwInterfaceDumpClient, error)
    35  	SwInterfaceGetMacAddress(ctx context.Context, in *SwInterfaceGetMacAddress) (*SwInterfaceGetMacAddressReply, error)
    36  	SwInterfaceGetTable(ctx context.Context, in *SwInterfaceGetTable) (*SwInterfaceGetTableReply, error)
    37  	SwInterfaceRxPlacementDump(ctx context.Context, in *SwInterfaceRxPlacementDump) (RPCService_SwInterfaceRxPlacementDumpClient, error)
    38  	SwInterfaceSetFlags(ctx context.Context, in *SwInterfaceSetFlags) (*SwInterfaceSetFlagsReply, error)
    39  	SwInterfaceSetInterfaceName(ctx context.Context, in *SwInterfaceSetInterfaceName) (*SwInterfaceSetInterfaceNameReply, error)
    40  	SwInterfaceSetIPDirectedBroadcast(ctx context.Context, in *SwInterfaceSetIPDirectedBroadcast) (*SwInterfaceSetIPDirectedBroadcastReply, error)
    41  	SwInterfaceSetMacAddress(ctx context.Context, in *SwInterfaceSetMacAddress) (*SwInterfaceSetMacAddressReply, error)
    42  	SwInterfaceSetMtu(ctx context.Context, in *SwInterfaceSetMtu) (*SwInterfaceSetMtuReply, error)
    43  	SwInterfaceSetPromisc(ctx context.Context, in *SwInterfaceSetPromisc) (*SwInterfaceSetPromiscReply, error)
    44  	SwInterfaceSetRxMode(ctx context.Context, in *SwInterfaceSetRxMode) (*SwInterfaceSetRxModeReply, error)
    45  	SwInterfaceSetRxPlacement(ctx context.Context, in *SwInterfaceSetRxPlacement) (*SwInterfaceSetRxPlacementReply, error)
    46  	SwInterfaceSetTable(ctx context.Context, in *SwInterfaceSetTable) (*SwInterfaceSetTableReply, error)
    47  	SwInterfaceSetTxPlacement(ctx context.Context, in *SwInterfaceSetTxPlacement) (*SwInterfaceSetTxPlacementReply, error)
    48  	SwInterfaceSetUnnumbered(ctx context.Context, in *SwInterfaceSetUnnumbered) (*SwInterfaceSetUnnumberedReply, error)
    49  	SwInterfaceTagAddDel(ctx context.Context, in *SwInterfaceTagAddDel) (*SwInterfaceTagAddDelReply, error)
    50  	SwInterfaceTxPlacementGet(ctx context.Context, in *SwInterfaceTxPlacementGet) (RPCService_SwInterfaceTxPlacementGetClient, error)
    51  	WantInterfaceEvents(ctx context.Context, in *WantInterfaceEvents) (*WantInterfaceEventsReply, error)
    52  }
    53  
    54  type serviceClient struct {
    55  	conn api.Connection
    56  }
    57  
    58  func NewServiceClient(conn api.Connection) RPCService {
    59  	return &serviceClient{conn}
    60  }
    61  
    62  func (c *serviceClient) CollectDetailedInterfaceStats(ctx context.Context, in *CollectDetailedInterfaceStats) (*CollectDetailedInterfaceStatsReply, error) {
    63  	out := new(CollectDetailedInterfaceStatsReply)
    64  	err := c.conn.Invoke(ctx, in, out)
    65  	if err != nil {
    66  		return nil, err
    67  	}
    68  	return out, api.RetvalToVPPApiError(out.Retval)
    69  }
    70  
    71  func (c *serviceClient) CreateLoopback(ctx context.Context, in *CreateLoopback) (*CreateLoopbackReply, error) {
    72  	out := new(CreateLoopbackReply)
    73  	err := c.conn.Invoke(ctx, in, out)
    74  	if err != nil {
    75  		return nil, err
    76  	}
    77  	return out, api.RetvalToVPPApiError(out.Retval)
    78  }
    79  
    80  func (c *serviceClient) CreateLoopbackInstance(ctx context.Context, in *CreateLoopbackInstance) (*CreateLoopbackInstanceReply, error) {
    81  	out := new(CreateLoopbackInstanceReply)
    82  	err := c.conn.Invoke(ctx, in, out)
    83  	if err != nil {
    84  		return nil, err
    85  	}
    86  	return out, api.RetvalToVPPApiError(out.Retval)
    87  }
    88  
    89  func (c *serviceClient) CreateSubif(ctx context.Context, in *CreateSubif) (*CreateSubifReply, error) {
    90  	out := new(CreateSubifReply)
    91  	err := c.conn.Invoke(ctx, in, out)
    92  	if err != nil {
    93  		return nil, err
    94  	}
    95  	return out, api.RetvalToVPPApiError(out.Retval)
    96  }
    97  
    98  func (c *serviceClient) CreateVlanSubif(ctx context.Context, in *CreateVlanSubif) (*CreateVlanSubifReply, error) {
    99  	out := new(CreateVlanSubifReply)
   100  	err := c.conn.Invoke(ctx, in, out)
   101  	if err != nil {
   102  		return nil, err
   103  	}
   104  	return out, api.RetvalToVPPApiError(out.Retval)
   105  }
   106  
   107  func (c *serviceClient) DeleteLoopback(ctx context.Context, in *DeleteLoopback) (*DeleteLoopbackReply, error) {
   108  	out := new(DeleteLoopbackReply)
   109  	err := c.conn.Invoke(ctx, in, out)
   110  	if err != nil {
   111  		return nil, err
   112  	}
   113  	return out, api.RetvalToVPPApiError(out.Retval)
   114  }
   115  
   116  func (c *serviceClient) DeleteSubif(ctx context.Context, in *DeleteSubif) (*DeleteSubifReply, error) {
   117  	out := new(DeleteSubifReply)
   118  	err := c.conn.Invoke(ctx, in, out)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  	return out, api.RetvalToVPPApiError(out.Retval)
   123  }
   124  
   125  func (c *serviceClient) GetBuffersStats(ctx context.Context, in *GetBuffersStats) (*GetBuffersStatsReply, error) {
   126  	out := new(GetBuffersStatsReply)
   127  	err := c.conn.Invoke(ctx, in, out)
   128  	if err != nil {
   129  		return nil, err
   130  	}
   131  	return out, api.RetvalToVPPApiError(out.Retval)
   132  }
   133  
   134  func (c *serviceClient) HwInterfaceSetMtu(ctx context.Context, in *HwInterfaceSetMtu) (*HwInterfaceSetMtuReply, error) {
   135  	out := new(HwInterfaceSetMtuReply)
   136  	err := c.conn.Invoke(ctx, in, out)
   137  	if err != nil {
   138  		return nil, err
   139  	}
   140  	return out, api.RetvalToVPPApiError(out.Retval)
   141  }
   142  
   143  func (c *serviceClient) InterfaceNameRenumber(ctx context.Context, in *InterfaceNameRenumber) (*InterfaceNameRenumberReply, error) {
   144  	out := new(InterfaceNameRenumberReply)
   145  	err := c.conn.Invoke(ctx, in, out)
   146  	if err != nil {
   147  		return nil, err
   148  	}
   149  	return out, api.RetvalToVPPApiError(out.Retval)
   150  }
   151  
   152  func (c *serviceClient) PcapSetFilterFunction(ctx context.Context, in *PcapSetFilterFunction) (*PcapSetFilterFunctionReply, error) {
   153  	out := new(PcapSetFilterFunctionReply)
   154  	err := c.conn.Invoke(ctx, in, out)
   155  	if err != nil {
   156  		return nil, err
   157  	}
   158  	return out, api.RetvalToVPPApiError(out.Retval)
   159  }
   160  
   161  func (c *serviceClient) PcapTraceOff(ctx context.Context, in *PcapTraceOff) (*PcapTraceOffReply, error) {
   162  	out := new(PcapTraceOffReply)
   163  	err := c.conn.Invoke(ctx, in, out)
   164  	if err != nil {
   165  		return nil, err
   166  	}
   167  	return out, api.RetvalToVPPApiError(out.Retval)
   168  }
   169  
   170  func (c *serviceClient) PcapTraceOn(ctx context.Context, in *PcapTraceOn) (*PcapTraceOnReply, error) {
   171  	out := new(PcapTraceOnReply)
   172  	err := c.conn.Invoke(ctx, in, out)
   173  	if err != nil {
   174  		return nil, err
   175  	}
   176  	return out, api.RetvalToVPPApiError(out.Retval)
   177  }
   178  
   179  func (c *serviceClient) SwInterfaceAddDelAddress(ctx context.Context, in *SwInterfaceAddDelAddress) (*SwInterfaceAddDelAddressReply, error) {
   180  	out := new(SwInterfaceAddDelAddressReply)
   181  	err := c.conn.Invoke(ctx, in, out)
   182  	if err != nil {
   183  		return nil, err
   184  	}
   185  	return out, api.RetvalToVPPApiError(out.Retval)
   186  }
   187  
   188  func (c *serviceClient) SwInterfaceAddDelMacAddress(ctx context.Context, in *SwInterfaceAddDelMacAddress) (*SwInterfaceAddDelMacAddressReply, error) {
   189  	out := new(SwInterfaceAddDelMacAddressReply)
   190  	err := c.conn.Invoke(ctx, in, out)
   191  	if err != nil {
   192  		return nil, err
   193  	}
   194  	return out, api.RetvalToVPPApiError(out.Retval)
   195  }
   196  
   197  func (c *serviceClient) SwInterfaceAddressReplaceBegin(ctx context.Context, in *SwInterfaceAddressReplaceBegin) (*SwInterfaceAddressReplaceBeginReply, error) {
   198  	out := new(SwInterfaceAddressReplaceBeginReply)
   199  	err := c.conn.Invoke(ctx, in, out)
   200  	if err != nil {
   201  		return nil, err
   202  	}
   203  	return out, api.RetvalToVPPApiError(out.Retval)
   204  }
   205  
   206  func (c *serviceClient) SwInterfaceAddressReplaceEnd(ctx context.Context, in *SwInterfaceAddressReplaceEnd) (*SwInterfaceAddressReplaceEndReply, error) {
   207  	out := new(SwInterfaceAddressReplaceEndReply)
   208  	err := c.conn.Invoke(ctx, in, out)
   209  	if err != nil {
   210  		return nil, err
   211  	}
   212  	return out, api.RetvalToVPPApiError(out.Retval)
   213  }
   214  
   215  func (c *serviceClient) SwInterfaceClearStats(ctx context.Context, in *SwInterfaceClearStats) (*SwInterfaceClearStatsReply, error) {
   216  	out := new(SwInterfaceClearStatsReply)
   217  	err := c.conn.Invoke(ctx, in, out)
   218  	if err != nil {
   219  		return nil, err
   220  	}
   221  	return out, api.RetvalToVPPApiError(out.Retval)
   222  }
   223  
   224  func (c *serviceClient) SwInterfaceDump(ctx context.Context, in *SwInterfaceDump) (RPCService_SwInterfaceDumpClient, error) {
   225  	stream, err := c.conn.NewStream(ctx)
   226  	if err != nil {
   227  		return nil, err
   228  	}
   229  	x := &serviceClient_SwInterfaceDumpClient{stream}
   230  	if err := x.Stream.SendMsg(in); err != nil {
   231  		return nil, err
   232  	}
   233  	if err = x.Stream.SendMsg(&memclnt.ControlPing{}); err != nil {
   234  		return nil, err
   235  	}
   236  	return x, nil
   237  }
   238  
   239  type RPCService_SwInterfaceDumpClient interface {
   240  	Recv() (*SwInterfaceDetails, error)
   241  	api.Stream
   242  }
   243  
   244  type serviceClient_SwInterfaceDumpClient struct {
   245  	api.Stream
   246  }
   247  
   248  func (c *serviceClient_SwInterfaceDumpClient) Recv() (*SwInterfaceDetails, error) {
   249  	msg, err := c.Stream.RecvMsg()
   250  	if err != nil {
   251  		return nil, err
   252  	}
   253  	switch m := msg.(type) {
   254  	case *SwInterfaceDetails:
   255  		return m, nil
   256  	case *memclnt.ControlPingReply:
   257  		err = c.Stream.Close()
   258  		if err != nil {
   259  			return nil, err
   260  		}
   261  		return nil, io.EOF
   262  	default:
   263  		return nil, fmt.Errorf("unexpected message: %T %v", m, m)
   264  	}
   265  }
   266  
   267  func (c *serviceClient) SwInterfaceGetMacAddress(ctx context.Context, in *SwInterfaceGetMacAddress) (*SwInterfaceGetMacAddressReply, error) {
   268  	out := new(SwInterfaceGetMacAddressReply)
   269  	err := c.conn.Invoke(ctx, in, out)
   270  	if err != nil {
   271  		return nil, err
   272  	}
   273  	return out, api.RetvalToVPPApiError(out.Retval)
   274  }
   275  
   276  func (c *serviceClient) SwInterfaceGetTable(ctx context.Context, in *SwInterfaceGetTable) (*SwInterfaceGetTableReply, error) {
   277  	out := new(SwInterfaceGetTableReply)
   278  	err := c.conn.Invoke(ctx, in, out)
   279  	if err != nil {
   280  		return nil, err
   281  	}
   282  	return out, api.RetvalToVPPApiError(out.Retval)
   283  }
   284  
   285  func (c *serviceClient) SwInterfaceRxPlacementDump(ctx context.Context, in *SwInterfaceRxPlacementDump) (RPCService_SwInterfaceRxPlacementDumpClient, error) {
   286  	stream, err := c.conn.NewStream(ctx)
   287  	if err != nil {
   288  		return nil, err
   289  	}
   290  	x := &serviceClient_SwInterfaceRxPlacementDumpClient{stream}
   291  	if err := x.Stream.SendMsg(in); err != nil {
   292  		return nil, err
   293  	}
   294  	if err = x.Stream.SendMsg(&memclnt.ControlPing{}); err != nil {
   295  		return nil, err
   296  	}
   297  	return x, nil
   298  }
   299  
   300  type RPCService_SwInterfaceRxPlacementDumpClient interface {
   301  	Recv() (*SwInterfaceRxPlacementDetails, error)
   302  	api.Stream
   303  }
   304  
   305  type serviceClient_SwInterfaceRxPlacementDumpClient struct {
   306  	api.Stream
   307  }
   308  
   309  func (c *serviceClient_SwInterfaceRxPlacementDumpClient) Recv() (*SwInterfaceRxPlacementDetails, error) {
   310  	msg, err := c.Stream.RecvMsg()
   311  	if err != nil {
   312  		return nil, err
   313  	}
   314  	switch m := msg.(type) {
   315  	case *SwInterfaceRxPlacementDetails:
   316  		return m, nil
   317  	case *memclnt.ControlPingReply:
   318  		err = c.Stream.Close()
   319  		if err != nil {
   320  			return nil, err
   321  		}
   322  		return nil, io.EOF
   323  	default:
   324  		return nil, fmt.Errorf("unexpected message: %T %v", m, m)
   325  	}
   326  }
   327  
   328  func (c *serviceClient) SwInterfaceSetFlags(ctx context.Context, in *SwInterfaceSetFlags) (*SwInterfaceSetFlagsReply, error) {
   329  	out := new(SwInterfaceSetFlagsReply)
   330  	err := c.conn.Invoke(ctx, in, out)
   331  	if err != nil {
   332  		return nil, err
   333  	}
   334  	return out, api.RetvalToVPPApiError(out.Retval)
   335  }
   336  
   337  func (c *serviceClient) SwInterfaceSetInterfaceName(ctx context.Context, in *SwInterfaceSetInterfaceName) (*SwInterfaceSetInterfaceNameReply, error) {
   338  	out := new(SwInterfaceSetInterfaceNameReply)
   339  	err := c.conn.Invoke(ctx, in, out)
   340  	if err != nil {
   341  		return nil, err
   342  	}
   343  	return out, api.RetvalToVPPApiError(out.Retval)
   344  }
   345  
   346  func (c *serviceClient) SwInterfaceSetIPDirectedBroadcast(ctx context.Context, in *SwInterfaceSetIPDirectedBroadcast) (*SwInterfaceSetIPDirectedBroadcastReply, error) {
   347  	out := new(SwInterfaceSetIPDirectedBroadcastReply)
   348  	err := c.conn.Invoke(ctx, in, out)
   349  	if err != nil {
   350  		return nil, err
   351  	}
   352  	return out, api.RetvalToVPPApiError(out.Retval)
   353  }
   354  
   355  func (c *serviceClient) SwInterfaceSetMacAddress(ctx context.Context, in *SwInterfaceSetMacAddress) (*SwInterfaceSetMacAddressReply, error) {
   356  	out := new(SwInterfaceSetMacAddressReply)
   357  	err := c.conn.Invoke(ctx, in, out)
   358  	if err != nil {
   359  		return nil, err
   360  	}
   361  	return out, api.RetvalToVPPApiError(out.Retval)
   362  }
   363  
   364  func (c *serviceClient) SwInterfaceSetMtu(ctx context.Context, in *SwInterfaceSetMtu) (*SwInterfaceSetMtuReply, error) {
   365  	out := new(SwInterfaceSetMtuReply)
   366  	err := c.conn.Invoke(ctx, in, out)
   367  	if err != nil {
   368  		return nil, err
   369  	}
   370  	return out, api.RetvalToVPPApiError(out.Retval)
   371  }
   372  
   373  func (c *serviceClient) SwInterfaceSetPromisc(ctx context.Context, in *SwInterfaceSetPromisc) (*SwInterfaceSetPromiscReply, error) {
   374  	out := new(SwInterfaceSetPromiscReply)
   375  	err := c.conn.Invoke(ctx, in, out)
   376  	if err != nil {
   377  		return nil, err
   378  	}
   379  	return out, api.RetvalToVPPApiError(out.Retval)
   380  }
   381  
   382  func (c *serviceClient) SwInterfaceSetRxMode(ctx context.Context, in *SwInterfaceSetRxMode) (*SwInterfaceSetRxModeReply, error) {
   383  	out := new(SwInterfaceSetRxModeReply)
   384  	err := c.conn.Invoke(ctx, in, out)
   385  	if err != nil {
   386  		return nil, err
   387  	}
   388  	return out, api.RetvalToVPPApiError(out.Retval)
   389  }
   390  
   391  func (c *serviceClient) SwInterfaceSetRxPlacement(ctx context.Context, in *SwInterfaceSetRxPlacement) (*SwInterfaceSetRxPlacementReply, error) {
   392  	out := new(SwInterfaceSetRxPlacementReply)
   393  	err := c.conn.Invoke(ctx, in, out)
   394  	if err != nil {
   395  		return nil, err
   396  	}
   397  	return out, api.RetvalToVPPApiError(out.Retval)
   398  }
   399  
   400  func (c *serviceClient) SwInterfaceSetTable(ctx context.Context, in *SwInterfaceSetTable) (*SwInterfaceSetTableReply, error) {
   401  	out := new(SwInterfaceSetTableReply)
   402  	err := c.conn.Invoke(ctx, in, out)
   403  	if err != nil {
   404  		return nil, err
   405  	}
   406  	return out, api.RetvalToVPPApiError(out.Retval)
   407  }
   408  
   409  func (c *serviceClient) SwInterfaceSetTxPlacement(ctx context.Context, in *SwInterfaceSetTxPlacement) (*SwInterfaceSetTxPlacementReply, error) {
   410  	out := new(SwInterfaceSetTxPlacementReply)
   411  	err := c.conn.Invoke(ctx, in, out)
   412  	if err != nil {
   413  		return nil, err
   414  	}
   415  	return out, api.RetvalToVPPApiError(out.Retval)
   416  }
   417  
   418  func (c *serviceClient) SwInterfaceSetUnnumbered(ctx context.Context, in *SwInterfaceSetUnnumbered) (*SwInterfaceSetUnnumberedReply, error) {
   419  	out := new(SwInterfaceSetUnnumberedReply)
   420  	err := c.conn.Invoke(ctx, in, out)
   421  	if err != nil {
   422  		return nil, err
   423  	}
   424  	return out, api.RetvalToVPPApiError(out.Retval)
   425  }
   426  
   427  func (c *serviceClient) SwInterfaceTagAddDel(ctx context.Context, in *SwInterfaceTagAddDel) (*SwInterfaceTagAddDelReply, error) {
   428  	out := new(SwInterfaceTagAddDelReply)
   429  	err := c.conn.Invoke(ctx, in, out)
   430  	if err != nil {
   431  		return nil, err
   432  	}
   433  	return out, api.RetvalToVPPApiError(out.Retval)
   434  }
   435  
   436  func (c *serviceClient) SwInterfaceTxPlacementGet(ctx context.Context, in *SwInterfaceTxPlacementGet) (RPCService_SwInterfaceTxPlacementGetClient, error) {
   437  	stream, err := c.conn.NewStream(ctx)
   438  	if err != nil {
   439  		return nil, err
   440  	}
   441  	x := &serviceClient_SwInterfaceTxPlacementGetClient{stream}
   442  	if err := x.Stream.SendMsg(in); err != nil {
   443  		return nil, err
   444  	}
   445  	return x, nil
   446  }
   447  
   448  type RPCService_SwInterfaceTxPlacementGetClient interface {
   449  	Recv() (*SwInterfaceTxPlacementDetails, *SwInterfaceTxPlacementGetReply, error)
   450  	api.Stream
   451  }
   452  
   453  type serviceClient_SwInterfaceTxPlacementGetClient struct {
   454  	api.Stream
   455  }
   456  
   457  func (c *serviceClient_SwInterfaceTxPlacementGetClient) Recv() (*SwInterfaceTxPlacementDetails, *SwInterfaceTxPlacementGetReply, error) {
   458  	msg, err := c.Stream.RecvMsg()
   459  	if err != nil {
   460  		return nil, nil, err
   461  	}
   462  	switch m := msg.(type) {
   463  	case *SwInterfaceTxPlacementDetails:
   464  		return m, nil, nil
   465  	case *SwInterfaceTxPlacementGetReply:
   466  		if err := api.RetvalToVPPApiError(m.Retval); err != nil {
   467  			c.Stream.Close()
   468  			return nil, m, err
   469  		}
   470  		err = c.Stream.Close()
   471  		if err != nil {
   472  			return nil, m, err
   473  		}
   474  		return nil, m, io.EOF
   475  	default:
   476  		return nil, nil, fmt.Errorf("unexpected message: %T %v", m, m)
   477  	}
   478  }
   479  
   480  func (c *serviceClient) WantInterfaceEvents(ctx context.Context, in *WantInterfaceEvents) (*WantInterfaceEventsReply, error) {
   481  	out := new(WantInterfaceEventsReply)
   482  	err := c.conn.Invoke(ctx, in, out)
   483  	if err != nil {
   484  		return nil, err
   485  	}
   486  	return out, api.RetvalToVPPApiError(out.Retval)
   487  }